3

コア データ用に生成された SQLite ファイルの保護レベルを構成することはできますか?

NSFileProtectionCompleteレベルを使用する必要があります。

何か案は?

4

1 に答える 1

3

あなたがする行を探してくださいaddPersistentStoreWithType:configuration:URL:options:

NSURL *storeURL = ...;

NSError *error = nil;
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:...];
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
                                              configuration:nil
                                                        URL:storeURL
                                                    options:nil
                                                      error:&error])
{
    NSLog(@"Add persistent store failed: %@", error);
}

それから加えて:

NSDictionary *attributes = @{NSFileProtectionKey: NSFileProtectionComplete};
if (![[NSFileManager defaultManager] setAttributes:attributes
                                      ofItemAtPath:path
                                             error:&error]) {
    NSLog(@"File protection failed: %@", error);
}

バックグラウンドでデータベースを使用できないことに注意してください。NSFileProtectionCompleteUnlessOpen の使用を検討してください。

  • NSFileProtectionComplete: ファイルは暗号化された形式でディスクに保存され、デバイスのロック中または起動中は読み書きできません。
  • NSFileProtectionCompleteUnlessOpen: ファイルは暗号化された形式でディスクに保存されます。デバイスがロックされている間はファイルを作成できますが、一度閉じると、デバイスのロックが解除されるまで再び開くことはできません。ロックが解除された状態でファイルが開かれている場合、ユーザーがデバイスをロックしても、引き続きファイルにアクセスできます。ファイルを作成して開くときはパフォーマンスがわずかに低下しますが、書き込みや読み取りを行うときはそうではありません。NSFileProtectionCompleteこれは、デバイスのロックが解除されているときにファイル保護を変更することで軽減できます。
于 2013-08-27T17:09:41.043 に答える