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

ios – 致命错误:使用未实现的初始化程序’init(realm:schema :)’,第1张

概述我的问题: >昨天,我将我的领域框架从0.91.5更新为0.92.0,用于我的项目(以Swift编写).我发现领域团队已经将Swift部分和Objective-C部分与之前的完整Cocoa框架分开,团队也改变了语法.我已经将我的代码修改为最新的Realm语法,但是我仍然有一些init()的麻烦. 错误: >编译器抛出错误:致命错误:对CardModel使用未实现的初始化程序init(realm:s 我的问题:

>昨天,我将我的领域框架从0.91.5更新为0.92.0,用于我的项目(以Swift编写).我发现领域团队已经将Swift部分和Objective-C部分与之前的完整Cocoa框架分开,团队也改变了语法.我已经将我的代码修改为最新的Realm语法,但是我仍然有一些init()的麻烦.

错误:

>编译器抛出错误:致命错误:对CardModel使用未实现的初始化程序init(realm:schema :).
>事实是这个错误并没有发生在以前版本的Realm.
>我使用MultiPeer连接框架进行项目,这意味着我需要编码和解码才能交换数据.
>我尝试更改或添加其他的init()到CardModel,但它没有工作.

我的代码:

import RealmSwiftclass 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 = 1dynamic 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

解决方法 另外一天遇到同样的问题:

基本上你不应该创建“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}

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

总结

以上是内存溢出为你收集整理的ios – 致命错误:使用未实现的初始化程序’init(realm:schema :)’全部内容,希望文章能够帮你解决ios – 致命错误:使用未实现的初始化程序’init(realm:schema :)’所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1096839.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存