是否可以配置为 Core Data 生成的 SQLite 文件的保护级别?
我需要使用NSFileProtectionComplete
它的水平。
有任何想法吗?
是否可以配置为 Core Data 生成的 SQLite 文件的保护级别?
我需要使用NSFileProtectionComplete
它的水平。
有任何想法吗?
寻找你做的那条线addPersistentStoreWithType:configuration:URL:options:
NSURL *storeURL = ...;
NSError *error = nil;
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:...];
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeURL
options:nil
error:&error])
{
NSLog(@"Add persistent store failed: %@", error);
}
然后加:
NSDictionary *attributes = @{NSFileProtectionKey: NSFileProtectionComplete};
if (![[NSFileManager defaultManager] setAttributes:attributes
ofItemAtPath:path
error:&error]) {
NSLog(@"File protection failed: %@", error);
}
请注意,您不能在后台使用数据库,请考虑使用 NSFileProtectionCompleteUnlessOpen:
NSFileProtectionComplete
:文件以加密格式存储在磁盘上,在设备锁定或启动时无法读取或写入。NSFileProtectionCompleteUnlessOpen
:文件以加密格式存储在磁盘上。文件可以在设备锁定时创建,但一旦关闭,在设备解锁之前无法再次打开。如果文件在解锁时打开,即使用户锁定设备,您也可以继续正常访问该文件。当文件被创建和打开时,会有一个小的性能损失,但在写入或读取时不会。这可以通过将文件保护更改NSFileProtectionComplete
为设备解锁时来缓解。