Ошибка с Realm, только на устройствах iOS, после перехода с Swift 1.2 на 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}

Я не понимаю, почему это не работает. Я совершенно уверен, что файл находится в комплекте, поэтому это похоже на проблему безопасности?

1 ответ

Решение

Вам необходимо открыть Область только для чтения, если она находится в вашем комплекте приложений, так как файлы в комплекте приложений не доступны для записи. Вы делали это в своем старом фрагменте кода через readOnly: true, но вы не делаете эквивалент в новом фрагменте кода. Вы можете увидеть, как это делается в примере кода в разделе " Другие области" документации Realm.

Другие вопросы по тегам