Ich frage mich, was die beste Praxis für die Instanziierung einer Realm-Datenbank für Swift 2 ist. Einer der Hauptunterschiede zwischen Realm für Swift 1.2 und Swift 2 ist, dass die Realm-Klasse Unterstützung für die Fehlerbehandlung hinzugefügt hat. Daher ist dieser Code auf der Realm Webseite nicht mehr funktioniert:Instantiieren der Realm-Datenbank für Swift 2.0 - Best Practice?
let realm = Realm()
ich von ein paar Möglichkeiten denken kann, eine Realm-Klasse in der Swift 2 Welt zu instanziiert:
(1) lass realm = versuchen! Realm()
Diese Option scheint mir ein wenig "unsicher" zu sein, da es möglicherweise zu einem Laufzeitfehler führt, wenn die Klasse nicht instanziiert wird.
(2) Platz gesamten Realm Betrieb (einschließlich Klasse Instanziierung) innerhalb Do-Catch-Block
do {
let realm = try Realm()
realm.write{realm.add(myObject)}
}
catch
{
print("Some Realm error")
}
Dies funktioniert auf jeden Fall und ist auf jeden Fall sicher. JEDOCH mag ich es nicht wirklich, die Realm-Klasse instanziieren jedes Mal, wenn ich eine Operation für die Datenbank ausführen muss. Wenn ich versuche, einen IVAR-Bereich zu erstellen und ihn außerhalb des Do-Catch-Blocks zu platzieren, wird die Variable nicht mehr verwendet. Zum Beispiel wird der folgende Code nicht kompilieren ...
//IVAR declared outside of Do-Catch...
let realm:Realm
do{
//Get instance of Realm
realm = try Realm()
//This write operation works
realm.write{realm.add(myObject_1)}
}
catch
{
print("Some Realm error")
}
//Create another Dog object
let myObject_2 = SomeObject()
//This next line produces an error: "Variable 'realm' used before being initialized".
//Initialized 'realm' inside Do-Catch is now out of scope.
realm.write({
realm.add(myObject_2)
})
ich jedes Feedback (vor allem jemanden von Realm) zu schätzen wissen würde, was die beste Praxis für mit Realms in dem neuen Fehler Arbeitsumgebung von Swift Handhabung 2 Sollte aussehen, wie. Danke im Voraus.
Vielen Dank – luckman777
versuchen! macht den Trick, aber ich stimme mit @ luckman777 überein, es fühlt sich unsicher an und es könnte die App zum Absturz bringen. Wenn es abstürzt, könnte es sein, weil die Datei fehlt oder ein Migrationsfehler, der wahrscheinlich in einem sehr globalen Bereich vielleicht auf appLaunch behandelt werden sollte ... versuchen? Auf der anderen Seite kann ein optionaler Wert zurückgegeben und das Fehlerbehandlungsszenario unterdrückt werden. Ich bin mir nicht sicher, was besser ist, im Moment änderte ich die meisten Instanzen, um es zu versuchen! ... und hoffe auf das Beste? –