2017-05-12 1 views
0

Ich benutze RealmSwift in meiner MacOS/OSX-Anwendung auf OSX 10.12.3 und Realm stürzt mit nicht abgefangener Ausnahme ab, wenn ich versuche, ein Objekt aus der Datenbank zu bekommen.Realm Swift Absturz mit nicht abgefangener Ausnahme beim Versuch, Objekt zu bekommen

Hier ist der Code-Schnipsel, die auf dem get Objekt func stürzt:

private var database: Realm! 

init(some_var: String) { 
    var configuration = Realm.Configuration() 
    configuration.fileURL = configuration.fileURL!.deletingLastPathComponent().appendingPathComponent("\(some_var).realm") 
    do { 
    debugPrint("Inside init: Current thread \(Thread.current)") 
    self.database = try Realm(configuration: configuration) 
    } catch { 
    debugPrint("realmInit: Can't create realm database.") 
    } 
} 

func getObject<T: Object, K>(with primaryKey: K) -> T? { 
    debugPrint("Inside getObject: Current thread \(Thread.current)") 
    return self.database.object(ofType: T.self, forPrimaryKey: primaryKey) // THIS LINE THROWS EXCEPTION 
} 

ich einen Absturz mit einer abgefangene Ausnahme erhalten:

"Inside init: Current thread <NSThread: 0x600000075700>{number = 5, name = (null)}" 
"Inside getObject: Current thread <NSThread: 0x600000075700>{number = 5, name = (null)}" 
libc++abi.dylib: terminating with uncaught exception of type NSException 

Zuerst dachte ich, es ist ein Threading-Problem war, aber Sie können sehen, dass ich den Realm und GetObject auf dem gleichen Thread initalisieren.

Jede Hilfe würde bitte geschätzt werden?

+1

höchstwahrscheinlich configuration.fileURL == nil, warum verwenden Sie das seltsame erzwungene Auspacken? – user3441734

+0

Interessant, ich werde versuchen zu sehen, ob das das Problem ist und antworte zurück, was ich finde. Ich bin mir nicht wirklich sicher, warum ich zwinge, das tbh auszupacken, ich denke, ich muss es irgendwo abgeholt haben. – Gix

+0

Das war nicht das Problem, siehe Antwort unten. – Gix

Antwort

0

Es stellte sich heraus, dass das Problem mit dem Rückgabetyp optional generische war.

Nach einem Gespräch mit einem der Mitwirkenden der Realm-Bibliothek auf GitHub klang es so, als könnte es ein RealmSwift-Bug sein.

Problem wurde hier aufgeworfenen https://github.com/realm/realm-cocoa/issues/4951

Behelfslösung eine Funktion zu implementieren, die eine Bool zurück, wenn das Objekt vorhanden ist, und dann eine nicht optionale generic zurück, wenn es der Fall ist, während ein neues Objekt erstellen, wenn es doesn t existieren.

Verwandte Themen