我正在尝试将NSMutableDictionary的内容写入Swift 3中的plist。这是我在Objective-C中使用的结构,但它在Swift中不起作用。运行下面的代码时,会导致错误。有谁知道这里可能有什么问题?
let array1 = "\(Int(Value1))"
let array2 = "\(Int(Value2))"
let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
let plistpath = NSURL(fileURLWithPath: paths[0]).appendingPathComponent("myplist9.plist")!.absoluteString
let dictionary: NSMutableDictionary = ["String":"String"]
dictionary["Value 1"] = array1
dictionary["Value 2"] = array2
if dictionary.write(toFile: plistpath, atomically: false) {
print("Success")
}
else {
print("Error")
}
答案 0 :(得分:3)
您无法使用NSURL
方法将absoluteString
转换为文件路径。您需要使用path
方法。
变化:
let plistpath = NSURL(fileURLWithPath: paths[0]).appendingPathComponent("myplist9.plist")!.absoluteString
为:
let plistpath = NSURL(fileURLWithPath: paths[0]).appendingPathComponent("myplist9.plist")!.path
由于您使用的是Swift 3,因此请使用URL
,而不是NSURL
。
let plistpath = URL(fileURLWithPath: paths[0]).appendingPathComponent("myplist9.plist")!.path
或者您可以使用NSDictionary write(to:atomically:)
的{{1}}方法。