我们有一个 POS 公寓租赁 iPad 应用程序,用于收集有关用户及其兴趣的大量数据(当然是在他们知情的情况下)。
我们使用 RestKit 将 CoreData 与服务器同步,这非常棒。
我想做的是有一个备份系统,这样如果 Core Data 阻塞,并且我记录的堆栈跟踪不包含我需要的数据,我仍然可以以某种方式保存数据。我永远不想丢失数据。
所以我在这里所做的是将用户数据写入磁盘上的文件以及 CoreData,如果没有出错,则在 session 结束时删除该文件。如果出现问题,它会在应用程序再次启动时与堆栈跟踪一起发送到 HockeyApp。
所以我的问题之一是性能。在它影响性能之前,我可以多久写入一次这个文本文件?这个应用程序中有一堆屏幕,他们可以在输入信息时翻阅这些屏幕。他们可以很快传呼,我不希望它造成延误。这是我应该考虑的事情还是我偏离了方向?
最佳答案
最终,您必须量化写入操作的大小和复杂性。
无论如何,是什么阻止您使用 C 库,或者更具体地说,是更典型的 C 方法?以下是您经常看到的方法差异:
- C: 对于每次更改,将一些字节附加到文件中
- ObjC:对于每个更改(集),创建所有内容的属性列表或存档。将所述属性列表完整写入磁盘。
增量方法也可以使用较低级别的 CF/NS IO 类型。特别是:
NSFileHandle
NSOutputStream
CFWriteStream
这些类型能够进行同步和异步写入。
无论如何 - 如果您有大量数据要写入并在每次交易时重新格式化到属性列表,那么您应该考虑增量写入。
关于ios - iPad 文件写入性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9139606/