Instanciando o banco de dados do Realm para o Swift 2.0 - prática recomendada?
Gostaria de saber qual é a melhor prática para instanciar um banco de dados do Realm para o Swift 2. Uma das principais diferenças entre o Realm for Swift 1.2 e o Swift 2 é que a classe Realm adicionou suporte ao tratamento de erros. Portanto, esse código no site da região não funciona mais:
let realm = Realm ()
Eu posso pensar em algumas maneiras de instanciar uma classe Realm no mundo Swift 2:
(1) deixe reino = tente! Reino()
Essa opção parece um pouco "insegura" para mim, pois potencialmente resulta em um erro de tempo de execução se a classe falhar na instanciação.
(2) Coloque toda a operação do território (incluindo instanciação de classe) dentro do bloco Do-Catch
do {
let realm = try Realm()
realm.write{realm.add(myObject)}
}
catch
{
print("Some Realm error")
}
Isso definitivamente funciona e é definitivamente seguro. No entanto, eu realmente não gosto de instanciar a classe Realm toda vez que preciso executar uma operação no banco de dados. Se eu tentar criar um 'domínio' do IVAR e colocá-lo fora do bloco Do-Catch, a variável ficará fora do escopo. Por exemplo, o código a seguir não será compilado ...
//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)
})
Agradeço qualquer feedback (especialmente alguém da Realm) sobre como deve ser a melhor prática para trabalhar com Realms no novo ambiente de tratamento de erros do Swift 2. Desde já, obrigado.