Skip to main content
 首页 » 操作系统

ios之保存 CLLocation 错误 : Mutating method sent to immutable object

2024年01月01日50xxx_UU

我已经阅读了其他相关问题,但我卡住了。

我正在尝试将最后一个已知位置保存到 plist 中供以后使用。

这是我收到的错误消息:

* Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFDictionary setObject:forKey:]: mutating method sent to immutable object'

这是我的代码:

var plist = NSDictionary(contentsOfFile: NSBundle.mainBundle().pathForResource("Config", ofType: "plist")) 
var dataToStore = NSKeyedArchiver.archivedDataWithRootObject(lastKnownLocation) 
plist.setValue(dataToStore, forKey: "location") 

“lastKnownLocation”变量是一个 CLLocation。 plist 中的“位置”键是“数据”类型。有人可以协助并让我知道如何做到这一点(或者如果有更好的方法,他们是如何做到的)?谢谢

请您参考如下方法:

您需要将 NSDictionary 更改为 NSMutableDictionary。

var path = NSBundle.mainBundle().pathForResource("Config", ofType: "plist") 
var plist: NSMutableDictionary = NSDictionary(contentsOfFile: path).mutableCopy() as NSMutableDictionary