我们有一个POS公寓租赁iPad应用程序,该应用程序用于收集有关用户及其兴趣(当然有他们的知识)的大量数据。

我们使用RestKit将CoreData与服务器同步,这非常好。

我想要做的是拥有一个备份系统,因此,如果核心数据阻塞,并且我记录的堆栈跟踪不包含我需要的数据,我仍然会以某种方式保存数据。我永远不想丢失数据。

因此,我在这里要做的是将用户数据除CoreData之外还写入磁盘上的文件中,并在 session 结束时擦除文件,如果一切正常。如果出了问题,当应用再次启动时,它会与堆栈跟踪一起发送到HockeyApp。

所以我的问题是表现之一。在影响性能之前,我应该多久写入一次此文本文件?此应用程序中有一堆屏幕,他们可以在输入信息时翻页。他们可以快速翻页,但我不希望它引起延迟。那是我应该考虑的事情还是我要离开?

最佳答案

最终,您必须量化写操作的大小和复杂性。

无论如何,是什么阻止了您使用C库,或更具体地说,是更典型的C方法?这是您经常看到的方法的差异:

  • C:对于每次更改,请将一些字节追加到文件
  • 对象:对于每个更改(集合),创建一个属性列表或所有内容的存档。将所述属性列表完整地写入磁盘。

  • 使用较低级别的CF / NS IO类型也可以使用增量方法。值得注意的是:
  • NSFileHandle
  • NSOutputStream
  • CFWriteStream

  • 这些类型能够同步和异步写入。

    无论如何-如果您有大量数据要写入并在每次事务处理时重新格式化为属性列表,则应该考虑使用增量写入。

    10-07 19:29
    查看更多