为什么NSMutableDictionary不会写入文件

时间:2016-09-21 16:21:42

标签: ios cocoa-touch swift3

原谅遗留类和Swift 3的混合,但为什么这不起作用?

let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
let documents = paths[0] as String
let path = documents.appending("/SomeData.plist")
let url : URL = URL.init(string: path)!

let sampleDict : NSMutableDictionary = ["name" : "somebody", "age" : "30 ", "food" : "taco"]

let manager = FileManager.default
if (manager.fileExists(atPath: url.absoluteString)) {

      sampleDict.write(to: url, atomically: true)

} else {

      manager.createFile(atPath: url.absoluteString, contents: nil, attributes: nil)
      sampleDict.write(to: url, atomically: true)
}

文件是在路径上创建的,但每次写入字典的内容都会失败。

1 个答案:

答案 0 :(得分:2)

文件系统中的网址必须使用

创建
let url = URL(fileURLWithPath: path)

网址始终是非可选的。

必须使用

检查文件系统URL
if (manager.fileExists(atPath: url.path)) {...

URL(string:无初始)和.absoluteString与具有file的不同方案的网址相关,例如http或{{1 }}

除非编译器确实需要,否则不要注释类型,例如

ftp

如果您想要一个可变字典,请使用let sampleDict = ["name" : "somebody", "age" : "30 ", "food" : "taco"] 而不是var

PS:现代语法

let

不需要显式创建新文件。