作者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
→ uranusjr:Core Data 的 backend 是 relational database, 不太適合 03/04 14:02
→ uranusjr:你的使用情境; 如果需要不定 key 的隨意插入就只能自己搞 03/04 14:03
→ uranusjr:直接插入 JSON value 是一個方法, 或者是改用 document- 03/04 14:04
→ uranusjr:based 的儲存方案, 例如 NoSQL 的那一大群... 03/04 14:04
我也有想過Archiver成一個檔案,然後加/解密來存取,不過想試試看用CoreData來完成
→ whitefur:我想原PO的意思應該只是要產生很多個object (record) 03/04 14:11
→ whitefur:而不是不定key 03/04 14:11
→ 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)
推 tentenlee:這樣我會用plist 03/04 22:50
→ BS0824:我也有想過存成plist檔,不過想使用看看CoreData 03/05 09:46