Можно ли настроить уровень защиты файла SQLite, созданного для Core Data?
Мне нужно использовать на нем уровень NSFileProtectionComplete
.
Любые идеи?
Можно ли настроить уровень защиты файла SQLite, созданного для Core Data?
Мне нужно использовать на нем уровень NSFileProtectionComplete
.
Любые идеи?
Найдите строку, в которой вы делаете 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
, когда устройство разблокировано.