2012-05-09 8 views
7

У меня есть этот код, написанный для моего - (NSPersistentStoreCoordinator *) persistentStoreCoordinator в приложении coreData. Я использовал шаблон приложения Master-Detail Xcode, чтобы создать приложение ...Тестирование NSFileProtectionComplete в iOS-симуляторе и устройстве

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator 
{ 
    if (__persistentStoreCoordinator != nil) { 
     return __persistentStoreCoordinator; 
    } 

    NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"Notes2.sqlite"]; 

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

     NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
     abort(); 
    }  

    NSString *urlString = [storeURL absoluteString]; 
    NSDictionary *fileAttributes = [NSDictionary dictionaryWithObject:NSFileProtectionComplete forKey:NSFileProtectionKey]; 
    if (![[NSFileManager defaultManager] setAttributes:fileAttributes ofItemAtPath:urlString error:&error]) 
    { 
     // Handle error 
    } 


    return __persistentStoreCoordinator; 
} 

Как я могу проверить, и знаю, что мой SQLite имеет NSFileProtectionComplete включен?

Я заблокировал симулятор, но файл был доступен для чтения, когда я дважды щелкнул по файлу в Finder.

+0

Я также проверил его на устройстве, заблокировав устройство, используя iTunes и общий доступ к файлам iTunes, чтобы скопировать файл с устройства на рабочий стол ... но файл был по-прежнему доступен для чтения. – OscarTheGrouch

+1

Вы смогли это проверить? – yoninja

ответ

0

iTunes не будет копировать файлы с устройства, если у него отсутствует ваш пароль или устройство ранее не доверено; вот как он способен расшифровать данные.

В Xcode 8 и ранее Simulator использует файловую систему хоста, а macOS в настоящее время не поддерживает шифрование на один файл так же, как это делает iOS, поэтому на macOS вы не можете проверить это в Simulator.

Смежные вопросы