2016-05-30 12 views
-3

Ich habe eine Antwort versucht, die nicht funktioniert: Swift Saving user NSUser Defaults.NSUser Defaults

Mein Problem ist, dass ich speichern möchte: var myDict = [Int:String]() permanent mit NSUser Standardeinstellungen.

Mein Code ist:

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() 
    } 
} 

Das Problem ist, dass ich diesen Fehler haben, wenn Sie auf die Schaltfläche auf meine App klicken (das ausgeführt wird): Thread 1 : Signal SIGABRT.

+0

Könnten Sie bitte zeigen, was der Fehler sagt? Vielen Dank! – penatheboss

+0

Es ist in meinem Beitrag der Link "Thead 1: Signal SIGABRT" und es sagt nichts anderes. –

+1

Sie sollten etwas im Debug-Protokoll am unteren Rand bekommen. Was sagt es? – penatheboss

Antwort

1

NSUserDefaults können nur Eigenschaftslistenobjekte speichern. Wie in den Property List Programming Guide bemerkt:

Und obwohl NSDictionary und CFDictionary Objekte zulassen, dass ihre Schlüssel Objekte jeglicher Art sein, wenn die Schlüssel nicht String-Objekte sind, sind die Sammlungen nicht eigenschafts Liste Objekte.

Sie können keine [Int: String] in NSUserDefaults speichern. Der Schlüssel muss eine Zeichenfolge sein.

+0

Ja, ich verstehe diesen Punkt jetzt, aber ich kann das nicht. Um meine [Int: String] zu speichern, habe ich versucht: userDefaults.setValue (myDict, forKey: "Dictionnary") userDefaults.synchronize() Ich habe den gleichen Fehler: (rotes Signal) Signal SIGABRT. Ich habe bereits einige Videos und Posts angeschaut, um es zu lösen, aber es funktioniert nicht. –

+1

Mein Punkt ist, dass Sie eine [Int: String] in NSUserDefaults nicht speichern können. Der Schlüssel kann kein Int sein. Der Schlüssel muss eine Zeichenkette sein, um ihn in den Standardeinstellungen zu speichern. Benutzerstandards sind keine allgemeinen Speicher. Es ist zum Speichern von Voreinstellungen gedacht. –

+0

Ok ich habe verstanden, was du gesagt hast. Kann ich einige Schlüssel benutzen wie: word1, word2, word3 ... Ich werde sie wie "word \ n" kodieren, wobei n 1,2,3 ... n ist. –