Мне интересно, какая наилучшая практика для создания базы данных Realm для Swift 2. Одним из основных различий между Realm для Swift 1.2 и Swift 2 является то, что класс Realm добавил поддержку обработки ошибок. Поэтому этот код на веб-сайте Realm больше не работает:
пусть realm = Realm()
Я могу представить пару способов создания класса Realm в мире Swift 2:
(1) пусть realm = try! Realm()
Этот параметр кажется мне немного "небезопасным", поскольку он потенциально может привести к ошибке выполнения, если класс не создает экземпляр.
(2) Поместите всю операцию Realm (включая экземпляр класса) внутри блока Do-Catch
do {
let realm = try Realm()
realm.write{realm.add(myObject)}
}
catch
{
print("Some Realm error")
}
Это определенно работает и определенно безопасно. ОДНАКО, мне не очень нравится создавать класс Realm каждый раз, когда мне нужно выполнить операцию в базе данных. Если я попытаюсь создать IVAR 'realm' и разместить его вне блока Do-Catch, переменная выходит за рамки. Например, следующий код не будет компилироваться...
//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)
})
Я был бы признателен за любые отзывы (особенно из Realm) о том, как должна выглядеть лучшая практика для работы с Realms в новой среде обработки ошибок Swift 2. Спасибо заранее.