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

luc*_*777 12 realm swift2

我想知道实例化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的最佳实践应该是什么样的.提前致谢.

seg*_*ins 7

除非你真的要处理你收到的错误,否则我强烈推荐使用try!.

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