我有祖父母,父和子模型关系(Orchestra
类模型对象,其中包含许多Section
,每个包含许多Player
s)。换句话说,Orchestra
对象具有名为var allSections: [Section]
的属性,而Section
对象具有名为var allPlayers: [Player]
的属性
我的目标是使用NSCoding
保留所有三个模型的数据。 我很困惑我是否应该遵守NSCoding
(A)所有3个类,(B)只有子类,或者(C)除了子类之外的所有类?我混淆的一个原因是[NSCoding
是重生的] [1]。
到目前为止,我已为NSCoding
:
Player
协议方法
func encode(with aCoder: NSCoder) {
aCoder.encode(name, forKey: "playerName")
aCoder.encode(id, forKey: "playerId")
aCoder.encode(playerStatus, forKey: "playerStatus")
aCoder.encode(playerPosition, forKey: "playerPosition")
}
required init(coder aDecoder: NSCoder) {
name = aDecoder.decodeObject(forKey: "playerName") as! String
id = aDecoder.decodeObject(forKey: "playerId") as! String
playerStatus = aDecoder.decodeObject(forKey: "playerStatus") as! PlayerStatus
playerPosition = aDecoder.decodeObject(forKey: "playerPosition") as! PlayerPosition
super.init()
}
在init
的{{1}}方法中,我会致电:
Section
答案 0 :(得分:1)
如果您希望归档NSCoding
的实例,则所有3必须符合Orchestra
。
如果您只想归档只有Section
和Section
必须符合Player
的{{1}}个实例。
这样想。您要归档的任何对象必须符合NSCoding
。在该类中编码/解码所需的任何内容也必须符合NSCoding
。对于最终需要编码/解码的所有类,这需要保持一致。