2012-05-09 32 views
7

Tôi có mã này được viết cho tôi - (NSPersistentStoreCoordinator *) persistentStoreCoordinator trong ứng dụng coreData. Tôi đã sử dụng mẫu Ứng dụng Master-Detail của xCode để tạo ứng dụng ...Thử nghiệm NSFileProtectionComplete trong trình mô phỏng và thiết bị 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; 
} 

Làm cách nào để kiểm tra và biết rằng sqlite của tôi đã bật NSFileProtectionComplete?

Tôi đã khóa trình mô phỏng nhưng tệp vẫn có thể đọc được khi tôi nhấp đúp vào tệp trong Trình tìm kiếm.

+0

Tôi cũng đã thử nghiệm trên thiết bị bằng cách khóa thiết bị, sau đó sử dụng iTunes và Chia sẻ tệp iTunes để sao chép tệp từ thiết bị sang máy tính để bàn của tôi ... nhưng tệp vẫn có thể đọc được. – OscarTheGrouch

+1

Bạn có thể kiểm tra điều này không? – yoninja

Trả lời

0

iTunes sẽ không sao chép tệp từ thiết bị trừ khi nó có mật mã của bạn hoặc thiết bị trước đó đã được tin cậy; đó là cách nó có thể giải mã dữ liệu.

Trong Xcode 8 và trước đó Trình mô phỏng sử dụng hệ thống tệp lưu trữ và macOS hiện không hỗ trợ mã hóa mỗi tệp giống như cách iOS, vì vậy trên macOS bạn không thể kiểm tra điều này trong Trình mô phỏng.

Các vấn đề liên quan