我在coreData应用程序中为我的 – (NSPersistentStoreCoordinator *)persistentStoreCoordinator编写了这段代码.我使用xCode的master-detail Application模板来创建应用程序……
- (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中双击文件时,文件仍然可读.
解决方法
iTunes不会从设备复制文件,除非它有您的密码或设备先前已被信任;这就是它如何解密数据.
在Xcode 8及更早版本中,模拟器使用主机文件系统,macOS当前不支持每个文件加密,就像iOS一样,因此在macOS上你无法在模拟器中测试它.