我的问题:
- 昨天我将我的项目(用Swift编写)中的
Realm
框架从0.91.5
升级到0.92.0
。我发现Realm团队已经将之前的整个Cocoa框架中的Swift
部分和Objective-C
部分分离出来,并更改了语法。虽然我已经按照最新的Realm语法纠正了我的代码,但我在init()
方面仍然遇到一些麻烦。
错误信息:
- 编译器抛出错误:
fatal error: use of unimplemented initializer init(realm:schema:) for CardModel
。 - 奇怪的是,这个错误在以前的
Realm
版本中没有出现过。 - 我在项目中使用了
MultiPeer Connectivity
框架,这意味着我需要进行数据交换的Encode
和Decode
操作。 - 我尝试更改或添加其他
init()
以解决CardModel
的问题,但没有成功。
我的代码:
import RealmSwift
class CardModel: Object {
dynamic var cardID: String = ""
dynamic var firstName: String = ""
dynamic var lastName: String = ""
dynamic var userImage = NSData()
dynamic var status: String = ""
dynamic var cardType: Int = 1
dynamic var cardDate = NSDate()
override init() {
super.init()
}
init(coder aDecoder: NSCoder) {
super.init()
self.userImage = aDecoder.decodeObjectForKey("userImage") as! NSData
self.cardID = aDecoder.decodeObjectForKey("cardID") as! String
self.firstName = aDecoder.decodeObjectForKey("firstName") as! String
self.lastName = aDecoder.decodeObjectForKey("lastName") as! String
self.status = aDecoder.decodeObjectForKey("status") as! String
self.cardType = aDecoder.decodeObjectForKey("cardType") as! Int
self.cardDate = aDecoder.decodeObjectForKey("cardDate") as! NSDate
}
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(self.userImage, forKey: "userImage")
aCoder.encodeObject(self.cardID, forKey: "cardID")
aCoder.encodeObject(self.firstName, forKey: "firstName")
aCoder.encodeObject(self.lastName, forKey: "lastName")
aCoder.encodeObject(self.status, forKey: "status")
aCoder.encodeObject(self.cardType, forKey: "cardType")
aCoder.encodeObject(self.cardDate, forKey: "cardDate")
}
}
请教如何解决这个问题。
感谢您的指导和耐心。
Ethan Joe
convenience
和init( )
之间添加required
。 - Yichen Zhou