首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSUserDefaults出现NSMutable阵列错误

NSUserDefaults出现NSMutable阵列错误
EN

Stack Overflow用户
提问于 2015-03-04 04:44:33
回答 1查看 65关注 0票数 1

我有这个错误,但我不明白它为什么会发生。只有当我在我的iPad上运行应用程序时才会发生错误,在模拟器中它是正常的。

我从以下内容开始

代码语言:javascript
复制
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数组并重新保存它。

代码语言:javascript
复制
WeatherData.replaceObjectsInRange(NSRange(0 ... 3), withObjectsFromArray: [placemark.locality, Temperature, Code, Condition])

}

NSUserDefaults.standardUserDefaults().setObject(WeatherData, forKey: "WeatherData")

我得到的错误是:

代码语言:javascript
复制
'-[__NSCFArray replaceObjectAtIndex:withObject:]: mutating method sent to immutable object'

我知道我的数组是NSMutable的,但是NSUserDefaults只接受不可变的。我想做但没有成功的事情:

代码语言:javascript
复制
WeatherData.replaceObjectsInRange(NSRange(0 ... 3), withObjectsFromArray: [placemark.locality, Temperature, Code, Condition]) as NSArray 

因为我最初将WeatherData数组定义为NSMutable。我需要创建一个新的数组作为占位符吗?

提前谢谢你,王牌

EN

回答 1

Stack Overflow用户

发布于 2015-03-04 04:51:20

NSUserDefaults总是返回不可变的对象。让它像这样

代码语言:javascript
复制
WeatherData = NSMutableArray(array: NSUserDefaults.standardUserDefaults().objectForKey("WeatherData"))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28841525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档