首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用UIActivityViewController导出CocoaLumberjack日志

使用UIActivityViewController导出CocoaLumberjack日志
EN

Stack Overflow用户
提问于 2019-04-25 15:51:32
回答 1查看 205关注 0票数 0

在我过去的一个应用程序中,我能够允许用户使用UIActivityViewController从设备中导出CocoaLumberjack日志,传递一组指向用户设备上的日志的文件URL。

然而,即使我(想我)移植了我的旧应用程序中的相同代码,我也无法在设备或模拟器上的UIActivityViewController中显示任何选项。我得到的只是“更多”:

在我的其他应用程序中,我可以像大多数其他文件一样,选择共享到Slack、Mail、Files等。

为了尝试理解我做错了什么,我创建了一个示例项目,但我仍然遇到同样的问题。代码非常简单,所以我现在不知道可能是什么问题,我知道这是可能的,因为我已经在另一个应用程序中(以某种方式)让它工作了。以下是示例应用程序中的代码:

代码语言:javascript
运行
复制
AppDelegate.swift

import CocoaLumberjack

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
        DDLog.add(DDOSLogger.sharedInstance)
        let fileLogger = DDFileLogger()
        fileLogger.rollingFrequency = 60 * 60 * 24
        fileLogger.logFileManager.maximumNumberOfLogFiles = 7
        DDLog.add(fileLogger)
        DDLogInfo("Did finish launching")
        return true
    }


}
代码语言:javascript
运行
复制
ViewController.swift

import CocoaLumberjack

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        DDLogInfo("View did load")
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        guard let fileLogger = DDLog.allLoggers.compactMap({ $0 as? DDFileLogger }).first else { fatalError() }
        let logURLs = fileLogger.logFileManager.sortedLogFilePaths.map { URL(fileURLWithPath: $0) }
        let controller = UIActivityViewController(activityItems: [logURLs], applicationActivities: nil)
        present(controller, animated: true)
    }


}

我已经三次检查了日志是否存在于磁盘上,无论是在设备上还是在模拟器上,它们确实存在。如果我检查logURLs常量中的URL,我可以导航到磁盘上的日志,甚至可以像打开任何其他日志一样在控制台中打开它们。

EN

回答 1

Stack Overflow用户

发布于 2019-04-26 04:14:07

在休息了一下,看了一下我之前发布的答案后,我正确地解决了这个问题。它不工作的原因是因为我在创建UIActivityViewController时在另一个数组中传递了一个URL数组。

所以这一行:UIActivityViewController(activityItems: [logURLs], applicationActivities: nil)

应该是:UIActivityViewController(activityItems: logURLs, applicationActivities: nil)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55844347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档