2016-04-18 13 views
0

データを迅速に保存するためにAppleのガイドを使用していますが、コンパイルしようとしたときに適合していないと私に伝えています。リンゴのガイドと他のコードに基づいている必要があります。クラスがNSCodingプロトコルに準拠していません

// MARK: NSCoding 

func encodeWithCoder(aCoder: NSCoder) { 
    aCoder.encodeObject(firstName, forKey: "firstName") 
    aCoder.encodeObject(lastName, forKey: "lastName") 
    aCoder.encodeObject(phoneNumber, forKey: "phoneNumber") 
    aCoder.encodeObject(email, forKey: "email") 
    aCoder.encodeObject(address, forKey: "address") 
} 

required convenience init?(coder aDecoder: NSCoder) { 
    firstName = aDecoder.decodeObjectForKey("firstName") as! String 
    lastName = aDecoder.decodeObjectForKey("lastName") as! String 
    phoneNumber = aDecoder.decodeObjectForKey("phoneNumber") as! String 
    email = aDecoder.decodeObjectForKey("email") as! String 
    address = aDecoder.decodeObjectForKey("addressq") as! String 

    self.init(phoneNumber: phoneNumber, firstName: firstName, lastName: lastName, email: email, address: address) 
} 

私はAppleのプログラムを正常に動作させることができないときに、なぜそれが準拠していないのか分かりません。

EDIT:問題は、私がNSObjectから継承したクラスを持っていなかったようです。それが問題を解決しました。ここ

+0

あなたは 'class'定義行を示さないことはできますか? – Paulw11

答えて

0

エラーなし:

class Dog { 
    var firstName: String 

    func encodeWithCoder(aCoder: NSCoder) { 
     aCoder.encodeObject(firstName, forKey: "firstName") 
    } 

    init(firstName: String) { 
     self.firstName = firstName 
    } 

    required convenience init?(coder aDecoder: NSCoder) { 
     let x = aDecoder.decodeObjectForKey("firstName") as! String 

     self.init(firstName: x) 
    } 

} 

var d = Dog(firstName: "Rover") 
+0

あなたのクラスはNSCodingプロトコルを採用しているとは言いません。これを行う必要があり、NSObjectから継承して有効な例になります – Paulw11

関連する問題