每次更改时保存列表

时间:2012-03-21 02:09:09

标签: objective-c ios

我正在编写一个应用程序,用户可以在其中添加和删除多个列表中的对象。为了在应用程序崩溃时保存列表,我希望每次更改时都将它们写入磁盘。我目前的计划是创建一个观察列表的类,因此每次更改时都会收到通知,以便对它们进行归档(列表及其中的所有对象都遵循NSCoding协议)。

应该注意的是,我事先知道会有多少个列表,而且这些列表的长度预计不会超过100个(大多数将是10-20个)。

这是实现我想要实现的目标的最佳方式吗?这应该是我担心的问题,还是仅在应用程序退出时才创建这些列表的纪念品?我还在考虑对NSMutableArray进行子类化,以创建一个在更改时自行保存的类,这样就不会有任何一个类必须知道应该保存的所有列表。

1 个答案:

答案 0 :(得分:2)

首先,这里有良好的直觉担心用户的数据。是的,当然你应该修复你的崩溃。但即便如此,您应首先保护用户的数据。其次,您应该担心用户的电池寿命。所以你不应该经常点击他们的闪存驱动器。

如果更改的数量不大,那么我建议创建具有NSMutableArray(而非is-a NSMutableArray)的“列表”对象。只要有人拨打addItem:,您就可以将自己写入磁盘,以便始终保持同步。如果变化很快发生,那么构建蹦床非常容易,如果发生了变化,每隔一秒就会节省一次,但不会超过每秒一次。 (如果这是任何问题,请添加评论,我会发布一些代码或博客;这并不困难。)