NSUserDefaults出现NSMutableArray错误

时间:2015-03-03 20:44:33

标签: ios swift compiler-errors nsmutablearray nsuserdefaults

我有这个错误,但我不明白为什么会这样。这个错误只发生在我在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。我是否需要创建一个新的数组作为占位符?

提前致谢, 王牌

1 个答案:

答案 0 :(得分:0)

NSUserDefaults始终返回不可变对象。像这样做

WeatherData = NSMutableArray(array: NSUserDefaults.standardUserDefaults().objectForKey("WeatherData"))