Ошибка с 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.