如何在Swift中将NSData写入新文件?

多佐

我正在努力将NSData实例的内容写入文件。我目前正在使用Xcode游乐场。

这是我的代码:

let validDictionary = [
    "numericalValue": 1,
    "stringValue": "JSON",
    "arrayValue": [0, 1, 2, 3, 4, 5]
]

let rawData: NSData!


if NSJSONSerialization.isValidJSONObject(validDictionary) {
    do {
        rawData = try NSJSONSerialization.dataWithJSONObject(validDictionary, options: .PrettyPrinted)
        try rawData.writeToFile("newdata.json", options: .DataWritingAtomic)
    } catch {
        // Handle Error
    }
}

我在资源中有一个名为newdata.json的文件,但是当我检查它时,里面什么也没有。我还尝试删除并查看是否将创建该文件,但仍然无法正常工作。

卡特

您的代码是正确的,但文件未写入您期望的位置。Swift Playgrounds处于沙盒状态,文件位于系统的另一部分,而不位于项目的resources文件夹中。

您可以通过立即尝试从文件中读取文件来检查文件是否已真正保存,如下所示:

let validDictionary = [
    "numericalValue": 1,
    "stringValue": "JSON",
    "arrayValue": [0, 1, 2, 3, 4, 5]
]

let rawData: NSData!


if NSJSONSerialization.isValidJSONObject(validDictionary) { // True
    do {
        rawData = try NSJSONSerialization.dataWithJSONObject(validDictionary, options: .PrettyPrinted)
        try rawData.writeToFile("newdata.json", options: .DataWritingAtomic)

        var jsonData = NSData(contentsOfFile: "newdata.json")
        var jsonDict = try NSJSONSerialization.JSONObjectWithData(jsonData!, options: .MutableContainers)
        // -> ["stringValue": "JSON", "arrayValue": [0, 1, 2, 3, 4, 5], "numericalValue": 1]

    } catch {
        // Handle Error
    }
}

来自Tom的以下评论:具体来说,文件位于某个位置,例如 /private/var/folder‌​s/bc/lgy7c6tj6pjb6cx0‌​p108v7cc0000gp/T/com.‌​apple.dt.Xcode.pg/con‌​tainers/com.apple.dt.‌​playground.stub.iOS_S‌​imulator.MyPlayground‌​-105DE0AC-D5EF-46C7-B‌​4F7-B33D8648FD50/newd‌​ata.json.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章