如何从UserDefaults向数组添加值?

时间:2019-10-06 01:27:45

标签: swift

我一直在尝试从UserDefaults.standard向数组添加值。

我的步骤:

  1. 在UserDefaults中添加一个值。
  2. 检查Userdefautls是否具有值(从0到100)
  3. (如果它在UserDefaults中具有值),则将该值添加到数组中。

    @IBAction func addfavorite(_ sender: Any) {
        UserDefaults.standard.set(myIndex, forKey:arr[myIndex])
    }
    
    for myIndex in 0..<100 {
        if UserDefaults.standard.bool(forKey:arr[myIndex]) != nil { 
            favoriteArr.append(myIndex)
        }
    }
    

将“布尔”类型的非可选值与“无”进行比较总是返回true

1 个答案:

答案 0 :(得分:1)

这里的问题是,bool(forKey:)方法在没有键值的情况下将始终返回false,因为它返回了非可选的Bool。检查nil的另一种方法是使用UserDefaults方法object(forKey:),该方法返回Any?

如果您的目的只是保留整数数组,则可以扩展UserDefaults并使用getter和setter创建计算属性以使数据自动保留:

extension UserDefaults {
    var favorites: [Int] {
        get { array(forKey: "favorites") as? [Int] ?? [] }
        set { set(newValue, forKey: "favorites") }
    }
}

UserDefaults.standard.favorites = []
UserDefaults.standard.favorites.append(2)
UserDefaults.standard.favorites.append(7)
UserDefaults.standard.favorites // [2,7]