附加到UserDefaults数组(Swift)

时间:2017-12-02 21:46:54

标签: arrays swift int nsuserdefaults

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




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




我知道如何将数组设置为现有数组:


&# xA;
  var array = [2,6,34,4,9]
 UserDefaults.standard.set(array,forKey:“intsArray”)
  




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




3 个答案:

答案 0 :(得分:1)

不确定你需要什么。

但是,这是向UserDefaults添加空数组的方法

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    app:title="@string/activity_title"
    ...
/>

这就是你的方式

  1. 从UserDefaults
  2. 加载数组
  3. 添加值
  4. 再次将其保存到UserDefaults
  5.  UserDefaults.standard.set([Int](), forKey: "nums")
    

答案 1 :(得分:1)

我建议你为此目的创建一个计算属性:

var intArray: [Int] {
    get {
        return UserDefaults.standard.array(forKey: "intArray") as? [Int] ?? []
    }
    set {
        UserDefaults.standard.set(newValue, forKey: "intArray")
    }
}

现在无论何时修改intArray,它都会在UserDefaults中更新它的值,每当你调用intArray时,它都会返回UserDefaults的值。

答案 2 :(得分:0)

而不是:

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

这样做:

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

如果数组在默认数据库中尚不存在,则会将数组初始化为空数组(或者如果它以某种方式损坏它而不能解析为数组{ {1}} S)。

无论如何,避免使用Int这是一种很好的做法,因为否则如果您的默认设置损坏,您将在阅读时崩溃。