在Core-Data中存储文件路径并保证一致性

时间:2012-02-16 20:42:20

标签: macos core-data

我在Core-Data中存储可以添加,移动和删除的文件的本地文件路径。因此,每个文件移动操作都需要进行核心数据写入。这显然既不是原子也不是保证一致性 - 例如,用户可以在任何时候强制退出。

有没有一种常见的方法可以解决这个问题?我猜这是一个在......之前出现的问题。

3 个答案:

答案 0 :(得分:3)

您可以从NSURL获取该文件的书签数据到该文件并保存该instand。这样,即使应用程序未运行,用户也可以移动文件,并且在应用程序再次启动后您仍然可以访问该文件。

如果您想使用应用程序沙盒(例如,因为您想在App Store上销售应用程序),则必须存储书签数据,否则您将无法再次访问这些文件,如果它们没有存储在您的应用程序沙箱中。

答案 1 :(得分:0)

每次使用Core-Data编写时,都应该使用saveContext方法

app = (AppDelegate*)[UIApplication sharedApplication].delegate;
[app saveContext];

答案 2 :(得分:0)

如果您不能依赖书签数据,您可以使用某种交易方法:

  1. 复制引用您文件的托管对象并更新其文件名。
  2. 保存托管对象上下文
  3. 重命名文件
  4. 删除原始托管对象。
  5. 再次保存托管对象上下文。
  6. 在最坏的情况下,用户将强制退出中间的任何地方,您将不得不从这种情况中恢复。但这很简单,只需删除其文件丢失且数据再次一致的托管对象。