我想知道实例化Realm数据库的最佳实践是针对Swift 2的。 Realm for Swift 1.2和Swift 2之间的主要区别之一是Realm类增加了对错误处理的支持。 因此,Realm网站上的此代码不再有效:
让realm = Realm()
我可以想到在Swift 2世界中实例化一个Realm类的几种方法:
(1)让领域=试试!境界()
这个选项对我来说似乎有点“不安全”,因为如果类无法实例化,它可能会导致运行时错误。
(2)将整个Realm操作(包括类实例化)放在Do-Catch块
中do {
let realm = try Realm()
realm.write{realm.add(myObject)}
}
catch
{
print("Some Realm error")
}
这绝对有效,绝对安全。但是,我真的不喜欢实例化 每次我需要对数据库执行操作时,Realm类。如果我试着创造 IVAR'领域'并将其置于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的新错误处理环境中使用Realms的最佳实践应该是什么样的。提前谢谢。
答案 0 :(得分:1)
请记住,Realm()和write都可以抛出。这意味着他们都需要尝试捕获,除非你使用尝试! 像这样:
do {
let realm = try Realm()
do {
try realm.write {
realm.add(myObject_1)
}
} catch let error {
print(error)
}
} catch let error{
print(error)
}