2017-01-28 47 views
0

我碰到的一個問題,而試圖在斯威夫特的iOS 3.0.2項目使用領域。開始簡單的,我想將它應用到一個名爲Genre類:斯威夫特3.0.2與境界 - 編譯錯誤

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
  • 夫特3.0.2
  • 境界使用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 
    } 
}