如何使用Realm Swift Init

时间:2015-06-26 23:55:55

标签: swift realm

我正在尝试在Swift中使用init for Realm。我试过以下

override init(value: AnyObject) { 
    super.init() 
    println("this is not called") 
} 

required init() { 
    super.init() 
    println("this is called") 
}

我希望能够将一个对象传递给初始化器,但是,我无法调用第一个函数。

3 个答案:

答案 0 :(得分:20)

我在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"
  }
}

答案 1 :(得分:5)

Realm Swift尚不支持覆盖Object.init()Object.init(_:),但您可以按https://github.com/realm/realm-cocoa/issues/1849进行更新!

答案 2 :(得分:0)

这是我对iOS 13Swift 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个月左右),我不知道这样做的后果。但是我的项目运行正常。一切都可以完美保存和检索。