Посмотрите на линии, где вы делаете databaseWithPath:
(или initWithPath:
), а затем добавить:
FMDatabase *db = [FMDatabase databaseWithPath:path];
NSDictionary *attributes = @{NSFileProtectionKey: NSFileProtectionCompleteUnlessOpen};
NSError *error;
BOOL success = [[NSFileManager defaultManager] setAttributes:attributes
ofItemAtPath:path
error:&error];
if (!success) {
NSLog(@"File protection failed: %@", error);
}
possible Values для ключа NSFileProtectionKey
являются:
NSFileProtectionNone
: Файл не имеет специальную защиту связанные с ним. Его можно читать или записывать в любое время.
NSFileProtectionComplete
: Файл хранится в зашифрованном виде на диске и не может быть считан или записан, пока устройство заблокировано или загружено.
NSFileProtectionCompleteUnlessOpen
: Файл хранится в зашифрованном виде на диске. Файлы могут быть созданы, когда устройство заблокировано, но после закрытия невозможно открыть снова, пока устройство не будет разблокировано. Если файл открывается при разблокировке, вы можете продолжить доступ к файлу в обычном режиме, даже если пользователь заблокирует устройство. Существует небольшое ограничение производительности при создании и открытии файла, хотя не при написании или чтении. Это можно смягчить, изменив защиту файла на NSFileProtectionComplete
, когда устройство разблокировано.
NSFileProtectionCompleteUntilFirstUserAuthentication
: Файл хранится в зашифрованном виде на диске и не может быть доступен до тех пор, пока устройство не загрузится. После того, как пользователь впервые откроет устройство, ваше приложение сможет получить доступ к файлу и продолжить доступ к нему, даже если пользователь впоследствии заблокирует устройство.
Правильный тип защиты может зависеть от версии iOS (последние две из них недоступны на iOS 4) и используете ли вы свою базу данных, когда устройство заблокировано.
Означает ли это, что файл НЕ зашифрован, если пользователь не указал PIN-код устройства? – Oli