原谅遗留类和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)
}
文件是在路径上创建的,但每次写入字典的内容都会失败。
答案 0 :(得分:2)
文件系统中的网址必须使用
创建let url = URL(fileURLWithPath: path)
网址始终是非可选的。
必须使用
检查文件系统URLif (manager.fileExists(atPath: url.path)) {...
URL(string:
(无初始)和.absoluteString
与具有file
的不同方案的网址相关,例如http
或{{1 }}
除非编译器确实需要,否则不要注释类型,例如
ftp
如果您想要一个可变字典,请使用let sampleDict = ["name" : "somebody", "age" : "30 ", "food" : "taco"]
而不是var
PS:现代语法
let
不需要显式创建新文件。