簡體   English   中英

使用NSUserDefaults的NSMutable陣列錯誤

[英]NSMutable Array error with 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 Array定義為NSMutable。 我需要創建一個新的數組作為占位符嗎?

預先感謝,王牌

NSUserDefaults始終返回不可變的對象。 像這樣

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM