我想知道实例化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")
}
Run Code Online (Sandbox Code Playgroud)
这绝对有效,绝对安全.但是,每次我需要在数据库上执行操作时,我真的不喜欢实例化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)
})
Run Code Online (Sandbox Code Playgroud)
我很感激任何反馈(特别是来自Realm的人)关于在Swift 2的新错误处理环境中使用Realms的最佳实践应该是什么样的.提前致谢.
除非你真的要处理你收到的错误,否则我强烈推荐使用try!.
您的第二个代码段不起作用,因为如果初始化Realm失败,realm则永远不会将该变量分配给该变量,这是无效的.你可以通过使realm变量成为类型来解决这个问题Realm?.
| 归档时间: |
|
| 查看次数: |
1655 次 |
| 最近记录: |