2016-12-21 2 views
2

Итак, я работаю над приложением, которое локально хранит информацию пользователя с помощью рамки CoreData. Информация может быть чувствительной, поэтому я думаю, как защитить информацию, хранящуюся в базе данных. В Xcode приборной панели, на вкладке возможностей, я нашел этот переключатель защиты данных:CoreData & Data Protection

Любой знает, как это работает? Если я включу переключатель, то Xcode автоматически закодирует мои файлы CoreData? Или как реализовать эту защиту на моих CoreData файлах? Цените свое время и пациент. Спасибо!

+0

Пробовали ли вы в документации Apple? С какой частью (-ами) вам нужна помощь? –

+0

@Tom Harrington –

+0

@Tom Harrington Да, я просмотрел документацию Apple о защите данных, но он очень краток и не упоминал о каких-либо полезных методах или о том, как реализовать. Я теперь запутался в том, как реализовать защиту данных iOS в моей базе данных CoreData ~ –

ответ

1

Вы нашли нужное место, вам нужно включить переключатель защиты данных в панели возможностей вашей цели, чтобы сигнализировать, что вы хотите использовать защиту данных. Согласно Apple's documentation, это должно быть достаточно:

По умолчанию уровня защиты является полной защитой, в которой файлы зашифрованы и недоступны, когда устройство заблокировано. Вы можете программно установить уровень защиты для файлов, созданных с помощью вашего приложения [...]

Он утверждает, вы можете установить уровень защиты программно. Если вы хотите, чтобы сделать это (я до сих пор сделать это, чтобы спасти;), вы должны использовать соответствующую опцию при создании persistentStoreCoordinator:

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: 
         @YES, NSMigratePersistentStoresAutomaticallyOption, 
         @YES, NSInferMappingModelAutomaticallyOption, 
         NSPersistentStoreFileProtectionKey, NSFileProtectionComplete, // <-- HERE 
         nil]; 
... 

__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; 
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) { 
... 
} 

NSFileProtectionComplete означает

Файл хранится в зашифрованный формат на диске и не может быть прочитан или записан в то время, пока устройство заблокировано или загружено.

Вы также можете использовать NSFileProtectionCompleteUnlessOpen, см. Краткую справку Xcode о различиях.

+0

Благодарим за отзыв. Поэтому, если я понимаю это право, пока я включаю переключатель Защита данных в области возможностей моей цели, все файлы, содержащиеся в этом приложении, зашифрованы и недоступны. –

+0

Но у меня есть возможность программно изменить уровень защиты. Похоже, включить переключатель достаточно для меня: D –

+0

Да. Возможно, поэтому документация настолько короткая;) – Dirk