2017-01-28 5 views
0

Я сталкиваюсь с проблемой при попытке использовать Realm в проекте Swift 3.0.2 iOS. Начиная простой, я хотел бы, чтобы применить его к классу имени Genre:Swift 3.0.2 и Realm - скомпилировать ошибки

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
  • Realm установлен с помощью Cocoapod
+0

когда у вас возникнет эта ошибка? –

+0

@GaneshKumar Как упоминалось в вопросе, когда я компилирую (или запускаю, если хотите) проект. – thomasg

ответ

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 
    } 
}