在我的应用程序中,我通过CoreData检索,解析并将XML数据保存到sqlite数据库.此数据对于应用程序的运行至关重要,并且需要离线使用.我的最低目标是iOS 4.3
这不是用户生成的,因此我无法将其存储在/ Library/Documents中
资料来源:https://developer.apple.com/library/ios/#qa/qa1719/_index.html
因此,除了将我的数据存储在/ Library/Caches文件夹中之外别无选择.iOS可以随时清除此目录.
这是否意味着我的应用程序随时下载新数据(通过xml)并使用......保存
[managedObjectContext save:&error]
... 我首先要检查MyData.sqlite是否仍然存在?
如果没有,那么我将需要"恢复"CoreData堆栈,然后警告可能需要获取新指针的任何其他对象,或者修改它的managedObjectContext的persistentStoreCoordinator.
这个解决方案似乎不对,但是基于iOS 5.0不支持"不备份",Apple的数据存储指南以及/ Libraray/Caches目录的清除方式,我不知道有什么其他选择.
Nick Lockwood精彩的StandardPaths图书馆有一个观点 ; 这个库Library/Application Support/Offline Data按照惯例存储应用程序私有的,不要被修剪的,不要备份的,持久性的跨应用程序更新数据.
你是对的,对于iOS 5.0及更早版本,任何防止文件备份的尝试都是无效的.
在iOS 5.0.1上,备份防护实现如下(源):
const char *filePath = [[fileURL path] fileSystemRepresentation];
const char *attrName = "com.apple.MobileBackup";
u_int8_t attrValue = 1;
setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0);
Run Code Online (Sandbox Code Playgroud)
在iOS 5.1及更高版本上,备份防护实现如下(源):
[fileURL setResourceValue: [NSNumber numberWithBool: YES]
forKey: NSURLIsExcludedFromBackupKey
error: &error];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2492 次 |
| 最近记录: |