2016-04-24 12 views
0

Swift 2 Xcoode 7.3-Speicher-Array von benutzerdefinierten Klasse mit verschachtelten benutzerdefinierten Klasse standardUserDefaults

Ich versuche, diese zu speichern:

var someArray = [Class1(id: 1, titel: "Titel 2", something: Class2(somevar: 20))]

mit NSUserDefaults:

let arrayData = NSKeyedArchiver.archivedDataWithRootObject(someArray) NSUserDefaults.standardUserDefaults().setObject(arrayData, forKey: "array")

Meine Klassen sehen so aus:

class Class1 { 

var id: Int 
var titel: String! 
var something: Class2 



init(id: Int, titel: String, something: Class2) { 
    self.id = id 
    self.titel = titel 
    self.something = something 

} 

required init(coder aDecoder: NSCoder) { 
    self.id = aDecoder.decodeIntForKey("id") 
    self.titel = aDecoder.decodeStringForKey("titel") 
    ??? 
} 

func encodeWithCoder(aCoder: NSCoder) { 
    aCoder.encodeObject(id, forKey: "id") 
    aCoder.encodeObject(titel, forKey: "titel") 
??? 
} 


class Class2: Class1 
{ 

var somevar: Int 

init(setback: Int) { 
    self.somevar = somevar 
} 

} 

Was muss ich in diesen Klassen hinzufügen?

(Habe einige mor Details hinzufügen, aber ich denke, es ist selbsterklärend)

Antwort

0

es ist sehr einfach.

schreiben:

self.something = aDecoder.decodeObjectForKey("something") as! Class2 

lesen:

aCoder.encodeObject(something, forKey: "something") 
1

Verwendet @FLX Codebeispiel und auch dafür sorgen, jedes Objekt in Ihrem Objekt Baum entspricht NSCoding.

Verwandte Themen