2016-05-30 4 views
-3

私はうまくいかない答えを試しました:Swift Saving user NSUser DefaultsNSUserのデフォルト

私の問題は、私が保存したいということです:var myDict = [Int:String]() NSUserのデフォルトを永久に使用しています。

私のコードは次のとおりです。

let userDefaults = NSUserDefaults.standardUserDefaults() 

@IBAction func AddOneWord(sender: AnyObject) { 
    if newWord.text != "" { 

     myDict.updateValue(newWord.text!, forKey: 1) 

     self.Word1Dictionnary.text = myDict[1] 

     userDefaults.setValue(myDict, forKey: "1") 
     userDefaults.synchronize() 
    } 
} 

問題が(実行されている)私のアプリ上のボタンをクリックしたときに、私はこのエラーを持っていることです:Thread 1 : Signal SIGABRT

+0

エラーの内容を表示してください。ありがとう! – penatheboss

+0

それは私のポストのリンク "Thead 1:Signal SIGABRT"であり、何も言わない。 –

+1

一番下のデバッグログに何かがあるはずです。それは何と言いますか? – penatheboss

答えて

1

NSUserDefaultsは、プロパティリストオブジェクトのみを格納できます。 Property List Programming Guideで述べたように:

とキーが文字列オブジェクトではありません場合はNSDictionaryのとCFDictionaryオブジェクトは、そのキーは任意の型のオブジェクトであることを許可しているが

は、コレクションはプロパティリストオブジェクトではありません。

[Int: String]NSUserDefaultsに保存することはできません。キーは文字列でなければなりません。

+0

はい、私はその点を今理解していますが、できません。私の[Int:String]を保存するには、私は使用しようとしました: userDefaults.setValue(myDict、forKey: "Dictionnary") userDefaults.synchronize() 私は同じエラーがあります:(赤信号)シグナルSIGABRT。私はすでにそれを解決するためにいくつかのビデオと投稿を見てきましたが、うまくいきません。 –

+1

NSUserDefaultsに[Int:String]を格納することができません。キーはIntではありません。キーはデフォルトで格納するための文字列でなければなりません。ユーザーデフォルトは汎用ストレージではありません。これは、設定を保存するためのものです。 –

+0

あなたが言ったことを理解しています。私はword1、word2、word3のようないくつかのキーを使うことができます... "word \ n"のようにそれらをコード化しますnは1,2,3 ... nでしょうか? –

関連する問題