gpt4 book ai didi

ios - fatal error : use of unimplemented initializer 'init(realm:schema:)'

转载 作者:IT王子 更新时间:2023-10-29 05:34:48 25 4
gpt4 key购买 nike

我的问题:

  • 昨天,我将我的项目(用 Swift 编写)的 Realm 框架从 0.91.5 更新到 0.92.0。我发现Realm Team已经把Swift部分和Objective-C部分从之前的整个Cocoa Framework中分离出来了,团队也改了语法。我已经将我的代码更正为最新的 Realm 语法,但是我在使用 init() 时仍然遇到了一些问题。

错误:

  • 编译器抛出错误: fatal error :对 CardModel 使用未实现的初始化程序 init(realm:schema:)
  • 问题是以前版本的 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")
}
}


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

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

伊桑·乔

最佳答案

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

基本上你不应该创建“init”方法,但你可以创建“convenience init”方法。在那种情况下你不能调用 super.init() 但你可以调用类似 self.init() 的东西

所以在你上面的例子中,你必须删除 override 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 - fatal error : use of unimplemented initializer 'init(realm:schema:)' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30090603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com