【问题标题】:save array to a file using writeToURL method使用 writeToURL 方法将数组保存到文件
【发布时间】:2015-09-13 13:23:58
【问题描述】:

我正在尝试将数组保存到 Application Support 文件夹中的文件中。 这是我正在使用的代码:

override func viewDidLoad() {
    super.viewDidLoad()
    let fileManager = NSFileManager()

    var suppUrl = try! fileManager.URLForDirectory(NSSearchPathDirectory.ApplicationSupportDirectory, inDomain: NSSearchPathDomainMask.UserDomainMask, appropriateForURL: nil, create: true)
    suppUrl = suppUrl.URLByAppendingPathComponent("test")

    try! fileManager.createDirectoryAtURL(suppUrl, withIntermediateDirectories: true, attributes: nil)
    print(suppUrl.path)


    let arrayToSave: [String] = ["1", "2", "3", "4", "5"]
    let success = NSArray(array: arrayToSave).writeToURL(suppUrl, atomically: true)
    print("did succeed?:  \(success)")

}

调试器抛出:

可选(“/Users/myName/Library/Developer/CoreSimulator/Devices/D573BBEC-D180-4A8A-93FE-BE04E2BBE6C8/data/Containers/Data/Application/911362BF-13C2-49AB-817B-49F2926194A1/Library/Application支持/测试”)

成功了吗? : 假的

为什么是假的?

编辑:缩短版,仍然没有运气:

let fileManager = NSFileManager()
        var suppUrl = try! fileManager.URLForDirectory(NSSearchPathDirectory.ApplicationSupportDirectory, inDomain: NSSearchPathDomainMask.UserDomainMask, appropriateForURL: nil, create: true)

        let arrayToSave: [String] = ["1", "2", "3", "4", "5"]
        let success = NSArray(array: arrayToSave).writeToURL(suppUrl.URLByAppendingPathComponent("test.plist"), atomically: true)

【问题讨论】:

    标签: ios nsfilemanager data-persistence create-directory


    【解决方案1】:

    您必须指定一个文件名,此时您正试图“保存”失败的目录。

    let success = NSArray(array: arrayToSave).writeToURL(suppUrl.URLByAppendingPathComponent("test.plist"), atomically: true)
    

    【讨论】:

    • 感谢您的光临。这也返回 false :(
    • 在Application Support 中查看您的目录test 并删除一个潜在的新目录test.plist
    • 我完全省略了创建测试目录。现在是3线。我用它编辑了我的问题。
    • 您的代码可以在游乐场和真实项目中运行。考虑短版直接将plist文件写入Application Support
    • 这很奇怪。如果我在操场上运行它,它确实会返回 true。如果我将 ApplicationSupportDirectory 更改为 DocumentDirectory,它也会返回 true,但如果我保持原样,则不会返回 true,例如应用程序支持目录。我搜索了一下,似乎ApplicationSupportDirectory默认不存在。
    猜你喜欢
    • 1970-01-01
    • 2017-01-05
    • 2017-10-22
    • 2015-08-23
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    • 2016-09-21
    • 2021-05-25
    相关资源
    最近更新 更多