我在Core-Data中存储可以添加,移动和删除的文件的本地文件路径。因此,每个文件移动操作都需要进行核心数据写入。这显然既不是原子也不是保证一致性 - 例如,用户可以在任何时候强制退出。
有没有一种常见的方法可以解决这个问题?我猜这是一个在......之前出现的问题。
答案 0 :(得分:3)
您可以从NSURL获取该文件的书签数据到该文件并保存该instand。这样,即使应用程序未运行,用户也可以移动文件,并且在应用程序再次启动后您仍然可以访问该文件。
如果您想使用应用程序沙盒(例如,因为您想在App Store上销售应用程序),则必须存储书签数据,否则您将无法再次访问这些文件,如果它们没有存储在您的应用程序沙箱中。
答案 1 :(得分:0)
每次使用Core-Data编写时,都应该使用saveContext方法
app = (AppDelegate*)[UIApplication sharedApplication].delegate;
[app saveContext];
答案 2 :(得分:0)
如果您不能依赖书签数据,您可以使用某种交易方法:
在最坏的情况下,用户将强制退出中间的任何地方,您将不得不从这种情况中恢复。但这很简单,只需删除其文件丢失且数据再次一致的托管对象。