Reputation: 79
An other problem when migrating from Swift 1 to Swift 2 and so migrating Realm... In the old code I had this lines of codes that works like a charm :
ApplicationController.A._initRealm = Realm.init(path: NSBundle.mainBundle().pathForResource("initRealm",ofType:"realm")!, readOnly: true, encryptionKey: nil, error: &error)
After the migration process I have replaced this lines of code with:
do
{
ApplicationController.A._initRealm = try Realm.init(path: NSBundle.mainBundle().pathForResource("initRealm", ofType: "realm")!)
}
catch
{
print(error)
}
But this does not work any more. I see the following error message:
Error Domain=io.realm Code=1 "open() failed: Operation not permitted" UserInfo={Error Code=1, NSLocalizedDescription=open() failed: Operation not permitted}
I don't understand why this doesn't work. I'm quite sure that the file is found in the bundle, so it seems like a problem of security?
Upvotes: 1
Views: 242
Reputation: 18308
You need to open the Realm as read-only if it resides within your application bundle as files within the application bundle are not writable. You were doing this in your old code snippet via readOnly: true
, but you're not doing the equivalent in the new code snippet. You can see this being done in the example code in the Other Realms section of the Realm documentation.
Upvotes: 2