从 Swift 1.2 迁移到 Swift 2 后,Realm 出错,仅在 iOS 设备上

Error with Realm, on iOS devices only, after migrating from Swift 1.2 to Swift 2

从 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}

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

如果 Realm 驻留在您的应用程序包中,您需要以 read-only 的身份打开它,因为应用程序包中的文件不可写。您在旧代码片段中通过 readOnly: true 执行此操作,但在新代码片段中并未执行相同的操作。您可以在 Realm 文档 Other Realms section 的示例代码中看到这一点。