【发布时间】:2016-02-03 20:44:31
【问题描述】:
我不明白为什么我在使用此方法时会出错:
let loginCountKey = "loginCount"
let appReviewParamsKey = "appReviewParams"
func resetLoginCount() {
let defaults = NSUserDefaults.standardUserDefaults()
if let reviewParameters = defaults.valueForKey(appReviewParamsKey) as? NSMutableDictionary {
reviewParameters[loginCountKey] = 1
defaults.setObject(reviewParameters, forKey: appReviewParamsKey)
defaults.synchronize()
}
}
setObject 行给我一个错误:caught "NSInternalInconsistencyException", ... mutating method sent to immutable object"
调试时,reviewParameters 显示为 NSMutableDictionary。我还尝试了 if var 而不是 if let (但它应该是不必要的)并得到了同样的错误。
我还尝试将值设置为 NSNumber(int: 1) 而不是 1。
为什么这会导致给定的错误?
【问题讨论】:
-
不用担心。这也让我感到意外。