我想知道在Swift 2中实例化Realm数据库的最佳实践是什么。 Realm针对Swift 1.2和Swift 2之间的一个主要区别是,Realm类增加了对错误处理的支持。 因此,Realm网站上的代码不再起作用:
let realm = Realm()
我能想到几种在Swift 2世界中实例化Realm类的方法:
(1) let 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 的人)关于在 Swift 2 的新错误处理环境中使用 Realm 的最佳实践应该是什么样的。提前致谢。