2017-12-02 8 views
1

私が追加できるIntsの配列を作成したいのですが、UserDefaultsに保存されるので、次にユーザがアプリケーションを開くと、配列が保存されます。だから、私はUserDefaults Array(Swift)に追加

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

... UserDefaults配列を作成する方法を知っていると私はすでに既存のアレイに配列を設定する方法を知っている:

var array = [2, 6, 34, 4, 9] 
UserDefaults.standard.set(array, forKey: "intsArray") 

しかし、私は、配列が空である必要がユーザーは配列にIntsを追加します。ご協力いただきありがとうございます!これに代えて

答えて

0

:(または場合

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

これは、それがまだデフォルトのデータベースに存在しないという場合は空の配列に配列を初期化します:

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

これを行います何らかの形で壊れており、Intの配列に解決されません)。

ここではas!の使用を避けてください。そうしないと、既定値が破損した場合にクラッシュする可能性があります。

+0

これは最初に機能しましたが、アプリケーションが終了して再び開くと、配列は空に戻ります... –

+0

@JacobCavin何かを追加した後、変更した配列をユーザーのデフォルト値に戻して書いていますか? –

0

必要なものが不明です。

しかし、これはあなたがUserDefaults

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

に空の配列を追加する方法であり、これはUserDefaults

  • から配列に値
  • は再びそれを保存追加どのよう

    1. 負荷でありますto UserDefaults

    var nums = UserDefaults.standard.array(forKey: "nums") as! [Int] 
    nums.append(1) 
    UserDefaults.standard.set(nums, forKey: "nums") 
    
  • 0

    私は、この目的のために計算されたプロパティを作成することをお勧めします:あなたが変更するたびに

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

    は、今すぐあなたのintArrayそれはUserDefaultsでその値を更新すると、あなたがintArrayを呼び出すたび、それはあなたの値を返します。 UserDefaultsから。

    関連する問題