2017-01-28 8 views
0

Ich stoße auf ein Problem beim Versuch, Realm in einem Swift 3.0.2 iOS-Projekt zu verwenden. Starten einfach, würde Ich mag es zu einer Klasse anzuwenden Genre genannt:Swift 3.0.2 und Realm - Kompilieren Fehler

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

} 

ganz einfach aussieht, nicht wahr? Trotzdem bekomme ich folgenden Kompilierfehler:

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' 

Irgendwelche bekommen einen Hinweis darauf, wie ich das lösen könnte? Nach dem, was ich online gesehen habe, sollte es für mich nicht notwendig sein, diese Methoden zu implementieren.

Setup:

  • Xcode 8.2.1
  • Swift 3.0.2
  • Realm installiert Cocoapod mit
+0

Wann erhalten Sie diesen Fehler? –

+0

@GaneshKumar Wie in der Frage erwähnt, wenn ich das Projekt kompiliere (oder Ausführen, wenn Sie bevorzugen). – thomasg

Antwort

2

Overriding init directly isn't possible in Realm.

Sie können dies umgehen, indem Sie Ihre init als convenience eins markieren.

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