我正在初始化 Realm 对象,当我尝试初始化类时出现以下错误: 在我为 Realm 添加初始值设定项后,错误仍然存在。这是 xcode 的错误吗?
查看 swift-realm ios 项目的示例代码 here ,看起来我不需要调用所需的 Realm 。也许示例代码已过时。
编辑--- 这是代码的粘贴:
class AgencyR: Object {
@objc dynamic var agency_id: String = ""
@objc dynamic var agency_name: String = ""
@objc dynamic var agency_timezone: String = ""
@objc dynamic var agency_url: String = ""
@objc dynamic var agency_lang: String = ""
@objc dynamic var agency_phone: String = ""
@objc dynamic var agency_fare_url: String = ""
required init(realm:Realm, agency_id: String, agency_name: String, agency_timezone: String, agency_url: String, agency_lang: String, agency_phone: String, agency_fare_url: String) {
self.init()
self.agency_id = agency_id
self.agency_name = agency_name
self.agency_timezone = agency_timezone
self.agency_url = agency_url
self.agency_lang = agency_lang
self.agency_phone = agency_phone
self.agency_fare_url = agency_fare_url
}
override static func primaryKey() -> String? {
return self.agency_id
}
}
最佳答案
如果您想为 Object
子类创建一个指定的初始化器,您需要实现 Object
的所有必需的初始化器,因为编译器将无法合成那些给你的了。
您可以通过使您的自定义初始化器成为便利初始化器而不是指定初始化器来解决这个问题,这将允许您调用类的指定初始化器,而不必调用父类(super class)初始化器。您仍然可以根据需要标记便利初始值设定项。
您的 primaryKey
函数也有问题。由于该函数是类型函数,您无法从函数内部访问实例,因此您无法调用 self
来访问实例属性。但是,无论如何都不需要这样做,因为您只需要将要用作主键的变量名称作为 String
返回即可。
class A: Object {
@objc dynamic var a = 1
required convenience init(_ a:Int) {
self.init()
self.a = a
}
override static func primaryKey()->String?{
return "a"
}
}
关于swift - 使用多个必需的启动器初始化 Realm 对象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49868857/