我有这个错误,但我不明白它为什么会发生。只有当我在我的iPad上运行应用程序时才会发生错误,在模拟器中它是正常的。
我从以下内容开始
if NSUserDefaults.standardUserDefaults().objectForKey("WeatherData") != nil {
WeatherData = NSUserDefaults.standardUserDefaults().objectForKey("WeatherData") as NSMutableArray
DisplayInfo(WeatherData[0] as String, Temperature: WeatherData[1] as Int, Code: WeatherData[2] as String, Condition: WeatherData[3] as String)
}然后在最后,我替换WeatherData数组并重新保存它。
WeatherData.replaceObjectsInRange(NSRange(0 ... 3), withObjectsFromArray: [placemark.locality, Temperature, Code, Condition])
}
NSUserDefaults.standardUserDefaults().setObject(WeatherData, forKey: "WeatherData")我得到的错误是:
'-[__NSCFArray replaceObjectAtIndex:withObject:]: mutating method sent to immutable object'我知道我的数组是NSMutable的,但是NSUserDefaults只接受不可变的。我想做但没有成功的事情:
WeatherData.replaceObjectsInRange(NSRange(0 ... 3), withObjectsFromArray: [placemark.locality, Temperature, Code, Condition]) as NSArray 因为我最初将WeatherData数组定义为NSMutable。我需要创建一个新的数组作为占位符吗?
提前谢谢你,王牌
发布于 2015-03-04 04:51:20
NSUserDefaults总是返回不可变的对象。让它像这样
WeatherData = NSMutableArray(array: NSUserDefaults.standardUserDefaults().objectForKey("WeatherData"))https://stackoverflow.com/questions/28841525
复制相似问题