祖父母、親子モデルの関係(Orchestra
クラスモデルオブジェクト、多くはSection
を含み、それぞれには多くのPlayer
が含まれています)があります。言い換えれば、Orchestra
オブジェクトはvar allSections: [Section]
と呼ばれる性質を持っており、Section
オブジェクトがvar allPlayers: [Player]
祖父母 - 親子データモデルの関係でNSCodingを適切に使用する
私の目標はNSCoding
を使用して3つのモデルすべてのデータを永続化するためにあるというプロパティがあります。 私はNSCoding
の(A)すべての3クラス、(B)子クラスのみ、または(C)子クラス以外のすべてのクラスに準拠する必要があるかどうか混乱していますか?私の混乱の原因の1つは、[NSCoding
が巻き込まれている] [1]という事実です。
これまでのところ、私はPlayer
ための標準NSCoding
プロトコルのメソッド実装されています:
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()
}
そして、私が呼び出すSection
ためinit
方法で:
if let archivedItems = NSKeyedUnarchiver.unarchiveObject(withFile: itemArchivalURL.path) as? [Item] {
allPlayers = archivedItems
}
参考になる説明です。 'allSections'が設定されているのに、' section'に属する 'allPlayers'プロパティは、保存してもデータが取り込まれないという問題に遭遇しました。問題を説明するコードを質問本体に追加しました。 – daspianist
元の質問に答えました。私はあなたがこのオリジナルの質問を閉じることを提案し、あなたはあなたの新しい問題で新しい質問を投稿します。関連するすべてのコードを含め、エンコード/デコードの問題点を明確に説明してください。 – rmaddy
入手しました。あなたの提案ごとにアンバンドルします。 – daspianist