我已阅读其他相关问题,但我被困住了。
我正在尝试将最后一个已知位置保存到plist中供以后使用。
以下是我收到的错误消息:
* 由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:' - [__ NSCFDictionary setObject:forKey:]:发送到不可变对象的mutating方法'
这是我的代码:
var plist = NSDictionary(contentsOfFile: NSBundle.mainBundle().pathForResource("Config", ofType: "plist"))
var dataToStore = NSKeyedArchiver.archivedDataWithRootObject(lastKnownLocation)
plist.setValue(dataToStore, forKey: "location")
“lastKnownLocation”var是一个CLLocation。 plist中的“location”键是“data”类型。有人可以协助并让我知道如何做到这一点(或者如果有更好的方法,他们如何做到这一点)?谢谢
答案 0 :(得分:2)
您需要将NSDictionary
更改为NSMutableDictionary
。
var path = NSBundle.mainBundle().pathForResource("Config", ofType: "plist")
var plist: NSMutableDictionary = NSDictionary(contentsOfFile: path).mutableCopy() as NSMutableDictionary
答案 1 :(得分:1)
plist.setValue(dataToStore, forKey: "location")
您无法在setValue
上呼叫NSDictionary
,因为它是一种变异方法,NSDictionary
是不可变的。
var plist = NSDictionary(contentsOfFile: NSBundle.mainBundle().pathForResource("Config", ofType: "plist"))
将此NSDictionary
更改为NSMutableDictionary
。