购物客户端,采用哪种数据持久话方法比较合理

yuan 发布于 2013年10月30日
无人欣赏。

正在做一个类似淘宝的购物客户端的项目

商品列表,商品详细信息等,会使用JSON从服务器取大量信息。个人觉得用SQLite和userdefault不是很合理。

不用SQLite的原因是:商品详情信息一般会用30-50个字段,建数据库的话非常繁琐

我现在的做法是:

(1)把取到的JSON存成NSDictionary,把NSDictionary以文件形式存在本地ApplicationSupport

(2)有网络情况:正常从服务器取数据,解析

无网络情况:从ApplicationSupport目录下取数据再解析

不知道我这种做法是不是太笨拙了,整个APP大概有10多处需要从服务器取数据,那我就需要在本地存10多个文件。

另外我还有知道有Core Data,但还不会用,需要学习。有没有第三方库可用?

希望大牛给予一些指点,非常感谢,(首次发问,不知此问题是否符合论坛要求)

共10条回复
指针为空 回复于 2013年10月30日

我理解Core Data就是SQLite的一个封装而已。。。

icodor 回复于 2013年10月30日

1楼 @指针为空 是的

terryso 回复于 2013年10月30日

1楼 @指针为空 你理解错了,恰恰相反,SQLite只是Core Data数据的一种持久化方式,Core Data还支持XML以及二进制的持久化方式。。。

yuan 回复于 2013年10月30日

1楼 @指针为空 我这里用Core Data的话,是比较合适的选择么?

yuzhouwww 回复于 2013年10月30日

4楼 @yuan 只是用来存储的话不建议你用core data,有点杀鸡用牛刀,而且很麻烦。我不知道你异步获取数据模块是自己写的还是第三方工具,其实很多第三方工具都带有强大缓存功能,例如ASIHTTPRequest,你不用自己手动存储数据,也不用判断是否有网络。

nickel 回复于 2013年10月30日

4楼3楼的意思已经说得很明确了,Core Data是一种封装数据存储的统一接口方式,就是一个连接业务模块和具体存储方式的中间层,至于具体存储方式采用何种实现是可以被切换的。用Core Data的好处时摆脱业务层与具体存储方式的逻辑关系,你目前可以采用JSON或XML之类的,未来可以替换为SQLite或二进制等的,但是代码改动很小。

nickel 回复于 2013年10月30日

说一下我现在的实现手段,商品列表和一个商品的详细信息其实数据都不大,我直接在服务器端提供静态json数据,客户端采用结合ASIHTTPRequest的缓存机制。就是说我在客户端本地直接缓存商品列表、商品详细信息的json文件,可以自己加入一定规则处理模块(针对特定的json数据存放路径和存放时间特殊管理,其余的放缓存目录按照普通的缓存机制进行处理)。这类数据不太需要用数据库方式来管理,没什么必要。

其他用户数据我会根据情况来用userdefault或其他方式存储。

terryso 回复于 2013年10月30日

7楼 @nickel 我们实现的思路和你们的差不多,不过我们用的是RestKit,有个对象映射的概念,会省事很多。。。

yuan 回复于 2013年10月30日

7楼 @nickel 非常非常感谢,我这儿思路清晰多了

nickel 回复于 2013年10月30日

8楼,看起来是不错,有空研究一下。

不过我个人其实对引入第三方库保留比较谨慎的态度,担心版本更新、bug跟进很多问题,而且还得花不少时间去研究,所以只有确实觉得很必要时才会引入。目前我们的需求来说定制一个简单的缓存机制即可,数据解析器和通讯库都是独立的,所以要做的事情不多。

登录 或者 注册