【问题标题】:Swift get Documents Directory returns empty StringSwift 获取文档目录返回空字符串
【发布时间】:2014-12-14 12:17:03
【问题描述】:

根据How to find NSDocumentDirectory in swift?我写了下一段代码:

let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
let files = NSFileManager().enumeratorAtPath(documentsPath)
var myString:String = "/"
while let file: AnyObject = files?.nextObject() {
    myString += (file as String + "/")
}
println(myString)

但是,实际上问题是,当我调试程序时,执行NSSearchPathForDirectoriesInDomains 命令后,documentsPath 等于 (String) ""。此外,我试图不在 MainViewController 中执行此操作,我正在尝试在 TableViewController 中执行此命令。

但是,它可以在操场上工作; 它不适用于我创建的任何项目

let docdir = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String + "Test.txt"

返回正确的路径,wtf?

【问题讨论】:

    标签: swift


    【解决方案1】:

    我查看了NSSearchPathForDirectoriesInDomains 的文档,上面写着,

    您应该考虑使用 NSFileManager 方法 URLsForDirectory:inDomains: 和 URLForDirectory:inDomain:适当的ForURL:创建:错误:。哪个返回 URL,这是首选格式。

    以下内容完美运行:

        let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
        println(urls[0])
    

    也就是说,您的代码失败了,因为 NSSearchPathForDirectoriesInDomains 返回的数组中的项目不是字符串。如果您想保留原始代码,只需将as String 更改为as NSString

    【讨论】:

    • 这可能是 Apple SDK 中的一个错误。 NSSearchPathForDirectoriesInDomains 正在返回一个 NSPathStore2 对象数组,可以将其转换为 NSStrings,但不能转换为 Strings
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多