我有这个错误,但我不明白为什么会这样。这个错误只发生在我在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。我是否需要创建一个新的数组作为占位符?
提前致谢, 王牌
答案 0 :(得分:0)
NSUserDefaults
始终返回不可变对象。像这样做
WeatherData = NSMutableArray(array: NSUserDefaults.standardUserDefaults().objectForKey("WeatherData"))