我正在尝试在Swift中使用Realm的init方法。我尝试了以下内容:
override init(value: AnyObject) {
super.init()
println("this is not called")
}
required init() {
super.init()
println("this is called")
}
我希望能将一个对象传递到初始化函数中,但是我无法让第一个函数被调用。
我正在尝试在Swift中使用Realm的init方法。我尝试了以下内容:
override init(value: AnyObject) {
super.init()
println("this is not called")
}
required init() {
super.init()
println("this is called")
}
我希望能将一个对象传递到初始化函数中,但是我无法让第一个函数被调用。
我的解决方案在Swift 3
中
自定义初始化器:
class Branches: Object {
dynamic var key: String = NSUUID().uuidString
dynamic var formattedAddress: String = ""
dynamic var latitude: Double = 0.0
dynamic var longitude: Double = 0.0
convenience init(formattedAddress: String, latitude: Double, longitude: Double) {
self.init()
self.formattedAddress = formattedAddress
self.latitude = latitude
self.longitude = longitude
}
override static func primaryKey() -> String? {
return "key"
}
}
在Realm Swift中,目前不支持重写Object.init()
和Object.init(_:)
,但你可以关注https://github.com/realm/realm-cocoa/issues/1849获取更新信息!
这是关于iOS 13和Swift 5的答案。
说实话,我当时并不知道该怎么做,但最终通过以下方式使其工作:
class Account: Object {
@objc dynamic var name: String = ""
@objc dynamic var balance: Double = 0.0
@objc dynamic var savings: Double = 0.0
@objc dynamic var available: Double = 0.0
init(name: String, balance: Double){
self.name = name
self.balance = balance
self.savings = 0.0
self.available = balance
}
required init() {
//fatalError("init() has not been implemented")
}
}
请记住,我完全是Swift新手(大约3个月),我不知道这样做的后果。但是我的项目运行良好。一切都被完美地保存和检索。
self.init()
会导致在使用某些功能时 Realm 的行为变得不可预测。请参见 @Zhanserik 的答案。 - soundsmitten