Der empfohlene Weg element Bequemlichkeit initializer schafft, wie die folgenden:
class Item: Object {
dynamic var isBook: Bool = true
dynamic var numberOfPages: Double = 0
dynamic var isInForeignLanguage: Bool = true
dynamic var isFictional: Bool = true
dynamic var value: Int {
get {
return calculalatedValue()
}
}
convenience init(isBook: Bool, numberOfPages: Double, isInForeignLanguage: Bool, isFictional: Bool) {
self.init()
self.isBook = isBook
self.numberOfPages = numberOfPages
self.isInForeignLanguage = isInForeignLanguage
self.isFictional = isFictional
}
...
}
Sie nicht Standardinitialisierung weglassen können, weil Realm benötigt einen Standardinitialisierer zum Instanziieren von Objekten für die Abfrage. Bei der Abfrage im Realm ruft Realm intern den Standardinitialisierer auf, um die Objekte zu instanziieren.
Sie können auch den Standardinitialisierer überschreiben, aber wir empfehlen es nicht. Wenn Sie den Standardinitialisierer überschreiben, sollten Sie andere erforderliche Initialisierer außer Kraft setzen, die aufgrund der Swift-Systembeschränkung vom ObjC-Layer geerbt wurden. Außerdem sollten Sie sowohl Realm
als auch RealmSwift
Frameworks importieren. Weil in den Parametern dieser Initialisierer nur Objective-C-Klassen vorhanden sind.
import RealmSwift
import Realm // Need to add import if you override default initializer!
class Item: Object {
dynamic var isBook: Bool = true
dynamic var numberOfPages: Double = 0
dynamic var isInForeignLanguage: Bool = true
dynamic var isFictional: Bool = true
dynamic var value: Int {
get {
return calculalatedValue()
}
}
required init() {
super.init()
}
required init(realm: RLMRealm, schema: RLMObjectSchema) {
super.init(realm: realm, schema: schema)
}
required init(value: AnyObject, schema: RLMSchema) {
super.init(value: value, schema: schema)
}
Dank viel! Daher ist der erste Code-Snippet der empfohlene Weg zur Initialisierung. Erste Standardinitialisierer kommen ins Spiel, gefolgt von Convenience init, oder? – DCDC
Ja. Die empfohlene Methode zur Initialisierung ist das erste Code-Snippet. und Erste Standardinitialisierer kommen ins Spiel, gefolgt von comfort init. –