1

オブジェクト Person があるとしましょう。(Person には構文エラーがあることはわかっています。無視してください。)

class Person: NSObject, NSCoding {

    var name : String
    var salary: NSNumber


    // MARK: NSCoding

    required convenience init(coder decoder: NSCoder) {
        self.init()
        self.name = decoder.decodeObjectForKey("name") as String
        self.salary = decoder.decodeObjectForKey("salary") as NSNumber        
    }

    func encodeWithCoder(coder: NSCoder) {
        coder.encodeObject(self.name, forKey: "name")
        coder.encodeObject(self.salary, forKey: "salary")
    }

}

私の質問は次のとおりです。アーカイブされたオブジェクトに給与を含むメソッドと含まないメソッドの 2 つの別個の encodeWithCoder メソッドを使用することは可能ですか。何かのようなもの:

func encodeWithCoderPrivate(coder: NSCoder) {
    coder.encodeObject(self.name, forKey: "name")
    coder.encodeObject(self.salary, forKey: "salary")
}

func encodeWithCoderPublic(coder: NSCoder) {
    coder.encodeObject(self.name, forKey: "name")
}

アーカイブに書き込まれるフィールドを制限する方法として、NSObject に複数のアーカイブ メソッドを実装する最善の方法は何ですか?

4

1 に答える 1