我有一个变量
var savedSearchItems: [String] {
get {
return UserDefaults.standard.stringArray(forKey: keySavedSearchItems) ?? []
}
set {
UserDefaults.standard.setValue(savedSearchItems, forKeyPath: keySavedSearchItems)
}
}
这是更新我的阵列的正确方法吗?
case .saveSearchItem(let item):
var temp = st.savedSearchItems
print(temp) //always prints "[]"
temp.append(item)
st.savedSearchItems = temp
答案 0 :(得分:2)
方法中的setter会导致无限循环。正确的语法是
var savedSearchItems: [String] {
get {
return UserDefaults.standard.stringArray(forKey: keySavedSearchItems) ?? []
}
set {
UserDefaults.standard.set(newValue, forKey: keySavedSearchItems)
}
}
从不将setValue:forKey(Path)
与UserDefaults