Zastanawiam się co jest najlepsze praktyki dla instancji bazy danych królestwa jest dla Swift 2. Jedną z głównych różnic między Realm Swift Swift 1.2 i 2 jest to, że klasa Realm dodała wsparcie dla obsługi błędów. Dlatego ten kod na stronie Realm już nie działa:Tworzenie bazy danych Realmating dla Swift 2.0 - najlepsza praktyka?
let realm = Realm()
mogę myśleć kilka sposobów wystąpienia klasy Realm świata Swift 2:
(1) dajmy królestwo = spróbuj! Realm()
Ta opcja wydaje się trochę „niebezpieczne” dla mnie jako potencjalnie skutkuje błędem wykonania jeśli klasa nie instancję.
(2) Operacja Place cały Realm (w tym klasy instancji) wewnątrz bloku Do przyłów
do {
let realm = try Realm()
realm.write{realm.add(myObject)}
}
catch
{
print("Some Realm error")
}
To na pewno działa i jest na pewno bezpieczne. Jednak ja nie lubię konieczności wystąpienia the Realm klasa każdym razem, gdy trzeba wykonać operację na bazie danych. Gdy próbuję tworzyć wykonania Ivar „królestwo” i umieścić go na zewnątrz bloku Do przyłów, zmienna wykracza poza zakres. Na przykład, poniższy kod nie będzie kompilować ...
//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)
})
będę wdzięczny za wszelkie opinie (zwłaszcza ktoś z Realm) na co najlepsze praktyki dla pracy z Krain w nowym obsługi błędów środowiska z Swift 2 powinien wyglądać. Z góry dziękuję.
Bardzo dziękuję – luckman777
spróbuj! robi lewę, ale zgadzam się z @ luckman777, nie czuję się bezpiecznie i może to spowodować awarię aplikacji. jeśli się zawiesza, może to być spowodowane brakiem pliku lub błędem migracji, który prawdopodobnie powinien być obsługiwany w znacznie większym zakresie globalnym, może na appLaunch ... spróbować? z drugiej strony może zwrócić wartość opcjonalną i pominąć scenariusz obsługi błędów. Nie jestem pewien, co jest lepsze, w tej chwili zmieniłem większość instancji, by spróbować! ... i mam nadzieję na najlepsze? –