代码之家  ›  专栏  ›  技术社区  ›  CristianMoisei

userdefaults无法正确检索我的字符串数组

  •  3
  • CristianMoisei  · 技术社区  · 7 年前

    我试图建立一种机制,让用户将项目保存到收藏夹(这是一个数组),然后将其保存到用户默认值,但我似乎无法让它正确写入ud。在下面的示例中打印udsaved将返回[],即使我刚刚向数组附加了一个元素。

    有人知道我做错了什么吗?

    这是一个语法错误,我没有检索到正确的还是我的逻辑有问题?

    var favouritesArray: [String] = []
    
    func UDWrite() {UserDefaults.standard.set(favouritesArray, forKey: "UDfavouritesArray")}
    let UDSaved = UserDefaults.standard.stringArray(forKey: "UDfavouritesArray") ?? [String]()
    
    
    favouritesArray.append("element")
    UDWrite()
    
    print(UDSaved)
    
    1 回复  |  直到 7 年前
        1
  •  3
  •   Herr der Töne    7 年前

    如评论中所述: UDSaved 永远不会更新。我的解决办法是 UD已保存 这样的函数:

    var favouritesArray: [String] = []
    
    func UDWrite() {UserDefaults.standard.set(favouritesArray, forKey: "UDfavouritesArray")}
    func UDSaved() -> [String] {return UserDefaults.standard.stringArray(forKey: "UDfavouritesArray") ?? [String]}()
    
    favouritesArray.append("element")
    UDWrite()
    
    print(UDSaved())
    

    或者你可以把它变成一个计算属性

    var UDSaved: [String] {
       return UserDefaults.standard.stringArray(forKey: "UDfavouritesArray") ?? [String]
    }