存储具有嵌套自定义类到customUserDefaults的自定义类数组

时间:2016-04-24 09:47:40

标签: swift class nsuserdefaults

斯威夫特2 Xcoode 7.3

我试着存储这个:

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
}

}

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

(必须添加一些详细信息;但我认为这是自我解释的)

2 个答案:

答案 0 :(得分:1)

使用@FLX代码示例并确保对象树中的每个对象也符合NSCoding。

答案 1 :(得分:0)

这很容易。

写:

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

读:

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