为什么写入plist在Swift中失败?

时间:2016-12-02 18:26:32

标签: ios swift swift3

我正在尝试将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")
}

1 个答案:

答案 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}}方法。