缓存模型(DTO)类供以后使用

时间:2013-09-23 20:22:48

标签: ios objective-c caching

我正在开发一个使用foursquare和其他服务器api-s从互联网上获取信息的应用程序。但是当应用程序没有连接到互联网时,我必须使用一些数据,我需要一种方法,可以轻松地将这些数据从互联网存储起来,如果手机失去连接,它们就会将它们存储在“磁盘”上作为缓存。基本上我想存储一些我的模型类,如:

VenueCategory包含名称,ID,图像(~10),7天的天气预报,场地。 场地包含图像,评级,名称,类别,类别图像,地址,电话号码和营业时间表。 水报告包含日期,最大,最小温度,风,......

我正在考虑3种方法,但我不知道哪种方法最适合我的问题,也许你可以给我更好的想法。

  1. 数据库 优点: 我从我的数据中得到了很好的表示。 缺点: 如果应用程序是活动的,很难修改。 我不需要一个新的场地类别的桌子,一张桌子里面有1个记录。 我必须做很多查询,插入,删除,更新等工作。

  2. 序列化 如果我能找到一个很好的方法,我只是说将整个类写入磁盘并从磁盘读取,这很容易。(我从未尝试过)

  3. Plist :(就像数据库一样)

  4. 我的最后一个问题是,您认为哪种最好,为什么?你有更好的主意吗?

2 个答案:

答案 0 :(得分:1)

解决此问题的最简单方法是(IMO),是让您的DTO符合NSCoding并使用NSKeyedArchiver对其进行序列化,并使用NSKeyedUnarchiver对其进行反序列化。

您可以使用AutoCoding,这样就可以毫不费力地自动在NSCoding中实现所需的方法。

答案 1 :(得分:0)

您是否考虑过使用CoreData?这是我想到的第一个解决方案。

CoreData(默认情况下)基于SQLite,在我看来是在iOS中持久化对象的事实标准。