我在我的WeatherData阵列中有4个变量输入。我的数组似乎也在适当的范围内添加了它们(即-3,但实际上我想用新的信息替换当前的信息。
我最初做的是:
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.replaceObjectsInRange(0.3, withObjectsFromArray: [placemark.locality, Temperature, Code, Condition])
NSUserDefaults.standardUserDefaults().setObject(WeatherData as NSArray, forKey: "WeatherData")每次迭代时,数组都会变大,如下所示:
(
"San Francisco",
50,
33,
Fair,
"San Francisco",
50,
33,
Fair,
"San Francisco",
50,
33,
Fair,
"San Francisco",
50,
33,
Fair
)但它只应该是
(
"San Francisco",
50,
33,
Fair,
)这意味着内容应该被替换并保存在NSUserDefaults中。
提前感谢您的帮助
发布于 2015-02-28 21:00:49
问题是您的错误和Swift中的错误(我想是)结合在一起的。
你说过:
WeatherData.replaceObjectsInRange(0.3, withObjectsFromArray: [placemark.locality, Temperature, Code, Condition])您正在传递0.3 (一个Double文本),但是replaceObjectsInRange:withObjectsFromArray:需要一个NSRange作为该参数。编译器应该在这里给出一个错误。
但是,编译器正在隐式地将文本转换为NSMakeRange(0,0),因此replaceObjectsInRange:withObjectsFromArray:将在数组的开头插入新元素。
试一试:
WeatherData.replaceObjectsInRange(NSRange(0 ... 3), withObjectsFromArray: [placemark.locality, Temperature, Code, Condition])发布于 2015-02-28 21:37:09
感谢罗布·梅奥夫的帮助,下面是我的代码副本:
if WeatherData.count == 0 {
WeatherData.addObjectsFromArray([placemark.locality, Temperature, Code, Condition])
} else {
WeatherData.replaceObjectsInRange(NSRange(0 ... 3), withObjectsFromArray: [placemark.locality, Temperature, Code, Condition])
}https://stackoverflow.com/questions/28786568
复制相似问题