2017-11-06 12 views
0

は私が連絡先の背景同期をやっているロック、およびされている場合、パスでレルムを開くことができませんデバイスは、アプリがクラッシュロックされている場合:キャッチされない例外により「RLMException」にアプリを終了デバイスは私のアプリで

を理由: '/var/mobile/Containers/Data/Application/FF77C6DA-970E-4FDD-AB69-C10C20607243/Documents/MyApp/default.realm.lock: パスでレルムを開くことができません '/var/mobile /Containers/Data/Application/FF77C6DA-970E-4FDD-AB69-C10C20607243/Documents/MyApp/default.realm.lock ': open()に失敗しました:操作が許可されていません。

私が試した:その後、

NSError *error; 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder 
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"/MyApp"]; 

if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath]) 
    [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:YES attributes:nil error:&error]; //Create folder 

と、このフォルダに.realmファイルを作成し、Noneにファイル保護を設定します。

は、新しいフォルダを作成します。 NSFilePosixPermissionsと一緒に

[[NSFileManager defaultManager] setAttributes:@{NSFileProtectionKey: NSFileProtectionNone, 
                NSFilePosixPermissions : [NSNumber numberWithShort:0777] 
                } 
            ofItemAtPath:[[[RLMRealm defaultRealm]configuration]fileURL].URLByDeletingLastPathComponent.path error:nil]; 

同期中にデバイスがロックされると、アプリがクラッシュします。

これを修正する方法についてのご意見はありますか?

+0

Xcodeターゲットのエンタイトルメントで、データ保護を有効にしていますか? https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/AddingCapabilities/AddingCapabilities.html –

+0

はい、オンになっています。 –

+0

私はそれをオフにした後、クラッシュは発生しませんでした。情報をありがとう@BradBrighton –

答えて

1

特定の条件(デバイスがロックされている場合など)で意図的にデータ保護を妨げることがあります。

デフォルトの保護レベルは、デバイスがロックされているときにファイルが暗号化され、アクセスできない完全な保護です。 iOS用App Programming Guideのオンディスク暗号化を使用したデータの保護で説明しているように、アプリで作成されたファイルの保護レベルをプログラムで設定することができます。共有コンテナに格納されているファイル(「アプリケーショングループの設定」を参照)については、プログラムで保護のレベルを設定します。データ保護は、Xcodeプロジェクトで有効になっている(https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/AddingCapabilities/AddingCapabilities.htmlから)

このリンクも示し(具体的には、ターゲットのための資格)あなたがわからない場合には、それが有効になっていた場合か否か。

あなたのアプリがData Protectionの利点を必要としていても、それほど細かいレベルではない場合は、アップルの記事の「オンディスク暗号化を使用してデータを保護する」セクションを参照する必要があります。 docs。

関連する問題