从NSUserDefaults

时间:2017-09-15 08:54:08

标签: swift3 nsuserdefaults

我有一个变量

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

1 个答案:

答案 0 :(得分:2)

方法中的setter会导致无限循环。正确的语法是

var savedSearchItems: [String] {
    get {
        return UserDefaults.standard.stringArray(forKey: keySavedSearchItems) ?? []
    }
    set {
        UserDefaults.standard.set(newValue, forKey: keySavedSearchItems)
    }
}

从不setValue:forKey(Path)UserDefaults

一起使用