>昨天,我将我的领域框架从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 :)’所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)