2016-04-24 84 views
0

斯威夫特2 Xcoode 7.3存储阵列自定义类的嵌套自定义类来standardUserDefaults

我尝试存储这样的:

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

与NSUserDefaults的:

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

我的课程如下所示:

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 
} 

} 

我需要在这些类中添加什么?

(不得不添加一些莫尔细节,但我认为它是自我解释)

回答

0

这很容易。

写:

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

读:

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

用途@FLX代码示例,并确保在你的对象树中每一个对象也符合NSCoding。