gpt4 book ai didi

swift2 - 为 Swift 2.0 实例化 Realm 数据库 - 最佳实践?

转载 作者:行者123 更新时间:2023-12-04 01:06:58 26 4
gpt4 key购买 nike

我想知道为 Swift 2 实例化 Realm 数据库的最佳实践是什么。
Realm for Swift 1.2 和 Swift 2 之间的主要区别之一是 Realm 类增加了对错误处理的支持。
因此,Realm 网站上的这段代码不再起作用:

让 Realm = Realm ()

我可以想到几种在 Swift 2 世界中实例化 Realm 类的方法:

(1)让境界=尝试! 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)
})

我很感激任何关于在 Swift 2 的新错误处理环境中使用 Realms 的最佳实践应该是什么样子的反馈(尤其是来自 Realm 的人)。提前致谢。

最佳答案

除非您真的要处理收到的错误,否则我强烈建议您使用 try! .

您的第二个代码段不起作用,因为如果初始化 Realm 失败,则 realm变量永远不会被赋值,这是无效的。你可以通过制作 realm 来解决这个问题。变量类型为 Realm? .

关于swift2 - 为 Swift 2.0 实例化 Realm 数据库 - 最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32218372/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com