2016-04-13 11 views
0

Ich versuche, ein Array zu lesen, das ich in NSUserdefaults gespeichert habe. Die meisten Beispiele zur Verwendung von "objectforkey" oder "arrayforkey", die beide "AnyObject" auslösen, geben Fehler in Swift 2.2.NSUserdefaults - Verwenden von objectforkeyy in Swift 2.2 Xcode7

Dies:

if let array NSUserDefaults.standardUserDefaults().objectForKey("mykey") 

sagt, dass nicht AnyObjet

diese verwenden:

let array NSUserDefaults.standardUserDefaults().objectForKey("mykey") as? [String: String] ?? [String: String]() 

stürzt die App selbst, dass ist "out of scope"

Dieses:

func readArray() -> NSArray { 
    return NSUserDefaults.standardUserDefaults().arrayForKey("NewsDescriptions")! 
} 

stürzt auch ab.

Kann mir jemand helfen, wie arrayforkey zu lesen, die ANYOBJECT ist wie ObjectForKey

+0

nicht speichern Arrays oder großes Objekt NSUserDefaults – Anton

+2

Ist das fehlende = ein Tippfehler? Wie in 'let array = ...' –

+0

Sie versuchen, es als Dictionary –

Antwort

0

Speicher Array:

let array:[String] = ["one","two"] 
NSUserDefaults.standardUserDefaults().setObject(array, forKey: "array") 
NSUserDefaults.standardUserDefaults().synchronize() 

abrufen Array:

if let retrievedArray:[String] = NSUserDefaults.standardUserDefaults().objectForKey("array") as? [String]{ 
    print("\(retrievedArray)") 
} 
+0

Nun, endlich hat es funktioniert, aber die Ausgabe ist falsch. Es gibt mir nur einen der Artikel und 4 mal. Ich speichere, wie Sie es angewiesen haben, und ich benutze ein string.append, um Elemente zum Array hinzuzufügen, und speichert dann nur das letzte angehängte Element 4 Mal. Zum Beispiel habe ich String [orange] ... apple.append ... ausgabe: [apple] [apple] [apple] [apple]. Sollte [orange, apple] sein –

+0

Ist das Array zum Zeitpunkt des Speicherns korrekt? –

+0

das Array ist korrekt, es wird mit Elementen angehängt, aber nicht mehr als 2 oder 3 Strings –