Swift 3.0.2和Realm - 编译错误

时间:2017-01-28 13:02:08

标签: ios swift realm

在尝试在Swift 3.0.2 iOS项目中使用Realm时,我遇到了一个问题。从简单开始,我想将它应用于名为Genre的类:

import Foundation
import RealmSwift

class Genre: Object {
    dynamic var id: Int
    dynamic var name: String

    init?(id: Int, name: String) {
        self.id = id
        self.name = name
        super.init()
    }

}

看起来很简单吧?尽管如此,我收到以下编译错误:

Genre.swift:23:1: 'required' initializer 'init()' must be provided by subclass of 'Object'

Genre.swift:23:1: 'required' initializer 'init(realm:schema:)' must be provided by subclass of 'Object'

Genre.swift:23:1: 'required' initializer 'init(value:schema:)' must be provided by subclass of 'Object'

有任何暗示我如何解决这个问题?从我在网上看到的情况来看,我没有必要实施这些方法。

设定:

  • Xcode 8.2.1
  • Swift 3.0.2
  • 使用Cocoapod安装Realm

1 个答案:

答案 0 :(得分:2)

Overriding init directly isn't possible in Realm

您可以将init标记为convenience来解决此问题。

import Foundation
import RealmSwift

class Genre: Object {
    dynamic var id: Int
    dynamic var name: String

    convenience init(id: Int, name: String) {
        self.init()            
        self.id = id
        self.name = name
    }
}