我正在开发一个使用foursquare和其他服务器api-s从互联网上获取信息的应用程序。但是当应用程序没有连接到互联网时,我必须使用一些数据,我需要一种方法,可以轻松地将这些数据从互联网存储起来,如果手机失去连接,它们就会将它们存储在“磁盘”上作为缓存。基本上我想存储一些我的模型类,如:
VenueCategory包含名称,ID,图像(~10),7天的天气预报,场地。 场地包含图像,评级,名称,类别,类别图像,地址,电话号码和营业时间表。 水报告包含日期,最大,最小温度,风,......
我正在考虑3种方法,但我不知道哪种方法最适合我的问题,也许你可以给我更好的想法。
数据库 优点: 我从我的数据中得到了很好的表示。 缺点: 如果应用程序是活动的,很难修改。 我不需要一个新的场地类别的桌子,一张桌子里面有1个记录。 我必须做很多查询,插入,删除,更新等工作。
序列化 如果我能找到一个很好的方法,我只是说将整个类写入磁盘并从磁盘读取,这很容易。(我从未尝试过)
Plist :(就像数据库一样)
我的最后一个问题是,您认为哪种最好,为什么?你有更好的主意吗?
答案 0 :(得分:1)
解决此问题的最简单方法是(IMO),是让您的DTO符合NSCoding并使用NSKeyedArchiver对其进行序列化,并使用NSKeyedUnarchiver对其进行反序列化。
您可以使用AutoCoding,这样就可以毫不费力地自动在NSCoding中实现所需的方法。
答案 1 :(得分:0)
您是否考虑过使用CoreData?这是我想到的第一个解决方案。
CoreData(默认情况下)基于SQLite,在我看来是在iOS中持久化对象的事实标准。