Coredata 太**难用了, 于是我写了这个框架, 搞定 json 解析&数据的增删改查

2014-09-13 09:52:24 +08:00
 ben46

于是我写了这个框架, 它可以很超简单地用于json解析和sqlite 增删改查。

这个库是在JSONModel基础之上做的.

JSONModel是用来解析json的一个库, 解析json完成之后, 我们需要做数据存储, 怎么办?

这些方法都糟糕透了!

于是我写了这个框架, 融合了json解析, 巨简单的sqlite增删改查.

项目地址:
https://github.com/ben46/jsonmodel

如何安装:
pod 'JSONModel', :git => 'https://github.com/ben46/JSONModel.git'


如何使用:

服务器返回的JSON:

{
  "ID": "1",
  "name": "Product name",
  "price": 12.95
}

定义你的数据model

@interface ProductModel : JSONModel
@property (assign, nonatomic) NSNumber<JMPrimaryKey> *ID;
@property (strong, nonatomic) NSString* name;
@property (assign, nonatomic) float price;
@end

某个你的代码处 :

#import "CountryModel.h"
...

NSString* json = (fetch here JSON from Internet) ... 
NSError* err = nil;

CountryModel* country = [[CountryModel alloc] initWithString:json error:&err];
 // 自动建表 && 自动生成sql && 自动保存数据
[country JM_save];

// find the value matches the primary key
CountryModel* countryYouJustSaved = [CountryModel JM_find:@1]; 
NSLog(@"%@", [countryYouJustSaved toDictionary]);

欢迎大家提issue, 我会在第一时间修复.

4894 次点击
所在节点    iDev
5 条回复
zichen0422
2014-09-13 10:58:25 +08:00
赞楼主创作.
yellowV2ex
2014-09-13 20:42:32 +08:00
曾用过 SQLitePersistentObject 被坑了,这东西是自动把SQLite转为Object,也是超简单的查询插入。

再多线程和数据量超多,大概有2000条的时候,经常闪退,全读取一次要好几秒,最后换了FMDB自己写,对象全用 NSDictionary
其实也不是什么复杂的操作,当时大概是本机有2000条聊天记录,然后读取网络的大概几百条,要匹配本地的数据库,如果没有就添加进去,所以要循环查询好几百次,SQLitePersistentObject这货居然要7秒多,这个线程在用数据库的时候,其他线程一访问就闪退,被坑死了。
yellowV2ex
2014-09-13 20:44:33 +08:00
@yellowV2ex 后来改成先把ID都列出来,在数组里匹配了再把新的插进去,只查询一次数据库的全部ID列出来而已,居然要5秒,是SQLitePersistentObject转换对象花太多时间了
Hysteria
2014-09-14 02:58:49 +08:00
我用Mantle
expkzb
2014-09-14 16:53:22 +08:00
我用 DCKeyValueMapping + ObjectiveRecord
还算比较优雅

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/133209

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX