2016-12-21 2 views
2

Donc je travaille sur une application qui stocke les informations utilisateur avec CoreData cadre localement. Les informations peuvent être sensibles, donc je pense à la façon de protéger les informations stockées dans la base de données. Dans le tableau de bord Xcode, sous l'onglet capacités, j'ai trouvé ce commutateur de protection des données:CoreData & Data Protection

Tout le monde sait comment cela fonctionne? Si j'allume le commutateur, Xcode encodera-t-il automatiquement mes fichiers CoreData? Ou comment implémenter cette protection sur mes fichiers CoreData? Appréciez votre temps et votre patient. Je vous remercie!

+0

Avez-vous essayé de regarder dans la documentation d'Apple? Avec quelle (s) pièce (s) avez-vous besoin d'aide? –

+0

@Tom Harrington –

+0

@Tom Harrington Oui, je suis allé à travers la documentation d'Apple sur la protection des données, mais il est très bref et ne mentionne aucune méthode utile ou comment mettre en œuvre. Je suis maintenant confus sur la façon de mettre en œuvre la protection des données iOS sur ma base de données CoreData ~ –

Répondre

1

Vous avez trouvé le bon emplacement, vous devez activer le commutateur de protection des données dans le volet des capacités de votre cible pour signaler que vous souhaitez utiliser la protection des données. Selon Apple's documentation, cela devrait suffire:

Le niveau de protection par défaut est une protection complète, dans lequel les fichiers sont cryptées et inaccessibles lorsque l'appareil est verrouillé. Vous pouvez définir par programme le niveau de protection des fichiers créés par votre application [...]

Il indique que vous pouvez définir par programme le niveau de protection. Si vous voulez faire (je fais encore que, pour être sauvés;), vous devez utiliser l'option appropriée lors de la création du 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 signifie

Le fichier est stocké dans un format crypté sur le disque et ne peut pas être lu ou écrit sur tant que le périphérique est verrouillé ou démarré.

Vous pouvez également utiliser NSFileProtectionCompleteUnlessOpen, voir l'aide rapide de Xcode pour les différences.

+0

Merci pour votre réponse. Donc, si je comprends bien, tant que j'active le commutateur de protection des données dans le volet des capacités de ma cible, tous les fichiers contenus dans cette application sont cryptés et inaccessibles. –

+0

Mais j'ai toujours l'option de changer le niveau de protection par programme. On dirait que allumer l'interrupteur est assez bon pour moi: D –

+0

Yep. C'est peut-être pourquoi la documentation est si brève;) – Dirk