附加到UserDefaults数组(Swift)

我想创建一个Ints数组,我可以将它添加到UserDefaults,以便下次用户打开应用程序时,数组将被保存。所以,我知道如何创建一个UserDefaults阵列...附加到UserDefaults数组(Swift)

var intArray = UserDefaults.standard.array(forKey: "intArray") as! [Int] 

,我知道如何设置阵列到已经存在的数组:

var array = [2, 6, 34, 4, 9] 

UserDefaults.standard.set(array, forKey: "intsArray")

但是,我需要的数组是空的然后用户将Ints添加到数组中。谢谢你的帮助!

回答:

取而代之的是:

var intArray = UserDefaults.standard.array(forKey: "intArray") as! [Int] 

做到这一点:

var intArray = UserDefaults.standard.array(forKey: "intArray") as? [Int] ?? [] 

这将初始化数组中,它并没有在缺省数据库中存在的情况下,空数组(或者,如果它以某种方式损坏,它不会解析为数组Int s)。

无论如何,避免使用as!这是非常好的做法,否则如果您的默认设置变坏,您将会在阅读时崩溃。

回答:

不确定你需要什么。

然而,这是你如何添加一个空数组UserDefaults

UserDefaults.standard.set([Int](), forKey: "nums") 

而且你这是怎么

  1. 负荷UserDefaults阵列
  2. 再次增加值
  3. 将它保存到UserDefaults

var nums = UserDefaults.standard.array(forKey: "nums") as! [Int] 

nums.append(1)

UserDefaults.standard.set(nums, forKey: "nums")

回答:

我建议你为此创建一个计算的属性:只要您修改intArray将在UserDefaults更新它的值

var intArray: [Int] { 

get {

return UserDefaults.standard.array(forKey: "intArray") as? [Int] ?? []

}

set {

UserDefaults.standard.set(newValue, forKey: "intArray")

}

}

现在,每当你叫intArray它返回你的价值来自UserDefaults。

以上是 附加到UserDefaults数组(Swift) 的全部内容, 来源链接: utcz.com/qa/258471.html

回到顶部