致命错误:使用未实现的初始化程序'init(realm:schema :)'

Eth*_*Joe 10 realm ios swift

我的问题:

  • 昨天,我更新了我的Realm框架,从0.91.50.92.0我的项目(用斯威夫特).我发现Realm Team已经将Swift部分和Objective-C部分与之前的整个Cocoa Framework 分开,团队也改变了语法.我已经将我的代码更正为最新的Realm语法,但我仍然遇到了一些问题init().

错误:

  • 编译器抛出错误:fatal error: use of unimplemented initializer init(realm:schema:) for CardModel.
  • 事情是这个错误没有发生与以前的版本Realm.
  • 我使用MultiPeer Connectivity框架进行项目,这意味着我需要EncodeDecode交换数据.
  • 我试图改变或其他添加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")
  }  
}
Run Code Online (Sandbox Code Playgroud)


请教我如何解决这个问题.

非常感谢您的指导和时间.

伊桑乔

mvo*_*mvo 15

前几天我遇到了同样的问题:

基本上你不应该创建"init"方法,但你可以创建"方便初始化"方法.在这种情况下你不能调用super.init(),但你调用self.init()之类的东西

所以在你的情况下你必须删除覆盖init(),其他init可以是:

convenience required init(coder aDecoder: NSCoder) {
    self.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
}
Run Code Online (Sandbox Code Playgroud)

更多信息:https://github.com/realm/realm-cocoa/issues/1849