从Swift 1.2迁移到Swift 2

时间:2016-01-12 20:27:17

标签: realm realm-migration

从Swift 1迁移到Swift 2以及迁移Realm时的另一个问题... 在旧代码中,我有这些代码行,就像一个魅力:

ApplicationController.A._initRealm = Realm.init(path: NSBundle.mainBundle().pathForResource("initRealm",ofType:"realm")!, readOnly: true, encryptionKey: nil, error: &error)

在迁移过程之后,我用以下代码替换了这行代码:

do
{
    ApplicationController.A._initRealm = try Realm.init(path: NSBundle.mainBundle().pathForResource("initRealm", ofType: "realm")!)
}
catch
{
    print(error)
}

但这不再起作用了。我看到以下错误消息:

Error Domain=io.realm Code=1 "open() failed: Operation not permitted" UserInfo={Error Code=1, NSLocalizedDescription=open() failed: Operation not permitted}

我不明白为什么这不起作用。我很确定该文件是在bundle中找到的,所以它似乎是一个安全问题?

1 个答案:

答案 0 :(得分:2)

如果Realm作为应用程序包中的文件位于应用程序包中的文件不可写,则需要以只读方式打开Realm。您是通过readOnly: true在旧的代码段中执行此操作的,但您在新的代码段中没有做相同的操作。您可以在Realm文档的Other Realms section中的示例代码中看到这一点。