为 Swift 2.0 实例化 Realm 数据库 - 最佳实践?
Instantiating Realm database for Swift 2.0 - best practice?
我想知道实例化 Realm 数据库的最佳实践是什么 Swift 2。
Swift 1.2 领域和 Swift 2 领域之间的主要区别之一是领域 class 添加了对错误处理的支持。
因此,Realm 网站上的这段代码不再有效:
让 realm = Realm()
我可以想出几种在 Swift 2 世界中实例化领域 class 的方法:
(1)让境界=试试!境界()
这个选项对我来说似乎有点 "unsafe",因为如果 class 无法实例化,它可能会导致运行时错误。
(2) 将整个 Realm 操作(包括 class 实例化)放在 Do-Catch 块中
do {
let realm = try Realm()
realm.write{realm.add(myObject)}
}
catch
{
print("Some Realm error")
}
这绝对有效,绝对安全。但是,我真的不喜欢必须实例化
每次我需要对数据库执行操作时,Realm class。如果我尝试创建
一个 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)
})
对于在 Swift 2 的新错误处理环境中使用 Realms 的最佳实践应该是什么样子的任何反馈(尤其是来自 Realm 的人),我将不胜感激。提前致谢。
除非您真的要处理收到的错误,否则我强烈建议使用try!
。
您的第二个代码片段不起作用,因为如果初始化领域失败,则永远不会分配给 realm
变量,这是无效的。您可以通过将 realm
变量设为 Realm?
.
类型来解决这个问题
请记住,Realm() 和 write 都可以抛出。这意味着除非您使用 try!,否则它们都需要 try catch。
像这样:
do {
let realm = try Realm()
do {
try realm.write {
realm.add(myObject_1)
}
} catch let error {
print(error)
}
} catch let error{
print(error)
}
我想知道实例化 Realm 数据库的最佳实践是什么 Swift 2。 Swift 1.2 领域和 Swift 2 领域之间的主要区别之一是领域 class 添加了对错误处理的支持。 因此,Realm 网站上的这段代码不再有效:
让 realm = Realm()
我可以想出几种在 Swift 2 世界中实例化领域 class 的方法:
(1)让境界=试试!境界()
这个选项对我来说似乎有点 "unsafe",因为如果 class 无法实例化,它可能会导致运行时错误。
(2) 将整个 Realm 操作(包括 class 实例化)放在 Do-Catch 块中
do {
let realm = try Realm()
realm.write{realm.add(myObject)}
}
catch
{
print("Some Realm error")
}
这绝对有效,绝对安全。但是,我真的不喜欢必须实例化 每次我需要对数据库执行操作时,Realm class。如果我尝试创建 一个 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)
})
对于在 Swift 2 的新错误处理环境中使用 Realms 的最佳实践应该是什么样子的任何反馈(尤其是来自 Realm 的人),我将不胜感激。提前致谢。
除非您真的要处理收到的错误,否则我强烈建议使用try!
。
您的第二个代码片段不起作用,因为如果初始化领域失败,则永远不会分配给 realm
变量,这是无效的。您可以通过将 realm
变量设为 Realm?
.
请记住,Realm() 和 write 都可以抛出。这意味着除非您使用 try!,否则它们都需要 try catch。 像这样:
do {
let realm = try Realm()
do {
try realm.write {
realm.add(myObject_1)
}
} catch let error {
print(error)
}
} catch let error{
print(error)
}