使用 writeToURL 方法将数组保存到文件

Posted

技术标签:

【中文标题】使用 writeToURL 方法将数组保存到文件【英文标题】:save array to a file using writeToURL method 【发布时间】: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)

【问题讨论】:

【参考方案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默认不存在。

以上是关于使用 writeToURL 方法将数组保存到文件的主要内容,如果未能解决你的问题,请参考以下文章

NSDocument 和 writeToURL:ofType:error 的问题:

writeToURL:错误处理

使用 JS 和 PHP 将 textarea 内容保存在文件中

matlab中如何保将显示出来的图像保存

writeToFile 和 writeToURL 有啥区别?

将不同长度的numpy数组保存到同一个csv文件的最佳方法是啥?