作者BS0824 (Bright_Sky)
看板MacDev
标题[问题] 如何将解析後的资料存到CoreData
时间Tue Mar 4 12:23:23 2014
如题,想请问各位先进,目前小弟程式完成从後台捞json资料,解析并显示於萤幕上
不过想从解析完的资料(有NSMutableArray也有NSDictionary)储存到CoreData
达成离线浏览,不过遇问题如下
(1)CoreData是否能动态产生Entity?
假设我要存的Array、object model如下
----------------------------------------------
MainViewItem *mData = [[MainViewItem alloc]init];
mData.titleID = [[arr objectForKey:@"id"] integerValue];
mData.title = [arr objectForKey:@"title"];
mData.unRead = [[arr objectForKey:@"unread"] integerValue];
Array[1]:mData.titleID = 1
mData.title = @"分类标题1"
mData.unread = 0;
Array[2]:mData.titleID = 2
mData.title = @"分类标题2"
mData.unread = 9;
. .
. .
----------------------------------------------
如果只有两个,那我的Entity只要做两个就好,那如果我要存10个以上或是不确定个数
要如何下手?
(2)CoreData该如何存解析过後的json(Array、Dictionary)?
或是直接把原始的json存入CoreData?
#新增1-----------------------
关於第一点,我刚刚想到解法如附图
http://ppt.cc/1BhQ
一个Entity中,名为title/titleID/unRead的Attribute各有7个,
#新增2-----------------------
目前遇到一个问题,假设我加入两笔资料
AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
NSManagedObjectContext *context = [appDelegate managedObjectContext];
OfflineMain *saveData = [NSEntityDescription
insertNewObjectForEntityForName:@"OfflineMain" inManagedObjectContext:context];
saveData.title1 = @"测试1";
saveData.titleID1 = [NSNumber numberWithInteger:1];
saveData.unRead1 = [NSNumber numberWithInteger:3];;
saveData.title2 = @"测试2";
saveData.titleID2 = [NSNumber numberWithInteger:2];
saveData.unRead2 = [NSNumber numberWithInteger:9];;
第一次存入并查询时只出现第一笔"测试1"的资料,然後第二次存入再查询时就出现
"测试1"、"测试2"的资料,为何不是第一次就全部显示我所储存的资料呢?
请问我该如何让储存的资料一次显示?
程式码:
http://ppt.cc/Kwqr
感谢大家!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 36.231.26.235
1F:→ uranusjr:Core Data 的 backend 是 relational database, 不太适合 03/04 14:02
2F:→ uranusjr:你的使用情境; 如果需要不定 key 的随意插入就只能自己搞 03/04 14:03
3F:→ uranusjr:直接插入 JSON value 是一个方法, 或者是改用 document- 03/04 14:04
4F:→ uranusjr:based 的储存方案, 例如 NoSQL 的那一大群... 03/04 14:04
我也有想过Archiver成一个档案,然後加/解密来存取,不过想试试看用CoreData来完成
5F:→ whitefur:我想原PO的意思应该只是要产生很多个object (record) 03/04 14:11
6F:→ whitefur:而不是不定key 03/04 14:11
7F:→ whitefur:跑一个for不就好了? 03/04 14:12
好的,我来试试看!
※ 编辑: BS0824 来自: 36.231.26.235 (03/04 14:49)
※ 编辑: BS0824 来自: 36.231.26.235 (03/04 14:55)
※ 编辑: BS0824 来自: 36.231.26.235 (03/04 16:55)
8F:推 tentenlee:这样我会用plist 03/04 22:50
9F:→ BS0824:我也有想过存成plist档,不过想使用看看CoreData 03/05 09:46