【问题标题】:Getting an iOS application's “~/Library” path reliably in Swift在 Swift 中可靠地获取 iOS 应用程序的“~/Library”路径
【发布时间】:2022-02-08 02:55:19
【问题描述】:

我想获取可以在 iOS 设备的 swift 应用程序中创建文件并将日志写入文件的目录。我在这里读到https://stackoverflow.com/a/3763050/919280,使用Objective-C,有一个解决方案。我尝试像这样快速编写它:

var appDir = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, true)

但是,NSLibraryDirectory 和 NSUserDomainMask 似乎没有出现在 Swift 中。 Swift 的实现方式是什么?

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    解决方案:

    var appDir = NSSearchPathForDirectoriesInDomains(.LibraryDirectory, .UserDomainMask, true)
    

    说明:
    您可以单击方法并查看它的声明。

    func NSSearchPathForDirectoriesInDomains(directory: NSSearchPathDirectory, domainMask: NSSearchPathDomainMask, expandTilde: Bool) -> [AnyObject]!
    

    如您所见,它需要 NSSearchPathDirectory 枚举
    和NSSearchPathDomainMask 结构。

    在swift中,当你使用枚举时,你不需要指定枚举类型,你可以使用case值本身 .LibraryDirectory 而不是 NSSearchPathDirectory.LibraryDirectory

    斯威夫特 5

    枚举现在是小写的:

    .libraryDirectory
    
    .userDomainMask
    

    【讨论】:

    • NSLibraryDirectory 到 .LibraryDirectory(或类似)的转换记录在哪里?我想了解为什么一个选项以 开头,而另一个需要一个命名空间
    • 查看我的编辑回答。 Xcode 为所有类生成 Swift 标头。如果您单击 NSSearchPathForDirectoriesInDomains。它将向您显示带有 Swift 声明的 Foundation->NSPatchUtilities 文件
    • 有一个 Xcode 错误,当您单击一种方法并想查看文档时,有时它无法显示 Swift 类。 (这是因为 Swift 仍处于测试阶段)。然后尝试重新启动 Xcode,它有时会有所帮助
    • 第二个参数也可以简写为.UserDomainMask
    • @KostiantynKoval NSSearchPathForDirectoriesInDomains 和 FileManager.default.urls(for: .libraryDirectory, in: .userDomainMask) 之间有区别吗?
    猜你喜欢
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 1970-01-01
    相关资源
    最近更新 更多