我在设备(iOS 12.3)上的设置启用了数据保护功能(在应用ID上为NSFileProtectionComplete,移动供应,在XCode中启用了数据保护功能),并使用以下选项设置了核心数据:
NSPersistentStoreFileProtectionKey: NSFileProtectionComplete
。
如果我禁用了设备上的密码,系统仍将FileAttributeKey.protectionKey
报告为NSFileProtectionComplete
:
DataModel.sqlite-wal: NSFileProtectionComplete
DataModel.sqlite-shm: NSFileProtectionCompleteUntilFirstUserAuthentication
DataModel.sqlite: NSFileProtectionComplete
以上是在删除设备密码之前或之后安装应用程序的情况。
由于对NSFileProtectionComplete
数据保护类的保护是基于设备密码的,因此这实际上意味着文件具有NSFileProtectionComplete
数据保护类,但是由于缺少设备密码,因此存在没有密钥,因此文件未加密?参见security document。