アプリがバックグラウンドにあるときに addPersistentStoreWithType を呼び出すと、sqlite
ファイルが利用できないことがあり、次のエラーが発生しました。
[モデル createPersistentStoreCoordinatorWithStoreURL:] 387 行目 $ sqlite 暗号化状態 NSFileProtectionCompleteUntilFirstUserAuthentication エラー : エラー Domain=NSCocoaErrorDomain Code=256 "The operation could't be completed. (Cocoa error 256.)" UserInfo=0x1560e540 {NSUnderlyingException=authorization denied, NSSQLiteErrorDomain=23}
これは、ファイルがまだ保護されているためであることがわかりました(デフォルトではNSFileProtectionCompleteUntilFirstUserAuthentication
、ユーザーが再起動後に初めてデバイスのロックを解除した後、保護されたデータが利用できるようになっています)。ただし、大量のクラッシュが発生しているため、これは正しく動作していないように感じます。また、実際に再起動した後も多くの人がまだデバイスをロックしているとは想像できません。
したがって、このように構成を調整して永続ストアコーディネーターを追加しています
NSDictionary *options = @{
NSMigratePersistentStoresAutomaticallyOption : @YES,
NSInferMappingModelAutomaticallyOption : @YES,
NSPersistentStoreFileProtectionKey : NSFileProtectionNone
};
質問:
- これにより、デバイスがロックされている場合でもバックグラウンドでファイルを利用できることが保証されますか?
- を変更すると、これにより sqlite (/ データ内) が壊れることはあり
NSPersistentStoreFileProtectionKey
ますか? - 機密データをデータベースに保存していませんが、使用時にセキュリティ上の懸念はあります
NSFileProtectionNone
か?