[問題] 如何將解析後的資料存到CoreData

看板MacDev作者 (Bright_Sky)時間10年前 (2014/03/04 12:23), 編輯推噓1(108)
留言9則, 4人參與, 最新討論串1/2 (看更多)
如題,想請問各位先進,目前小弟程式完成從後台撈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

03/04 14:02, , 1F
Core Data 的 backend 是 relational database, 不太適合
03/04 14:02, 1F

03/04 14:03, , 2F
你的使用情境; 如果需要不定 key 的隨意插入就只能自己搞
03/04 14:03, 2F

03/04 14:04, , 3F
直接插入 JSON value 是一個方法, 或者是改用 document-
03/04 14:04, 3F

03/04 14:04, , 4F
based 的儲存方案, 例如 NoSQL 的那一大群...
03/04 14:04, 4F
我也有想過Archiver成一個檔案,然後加/解密來存取,不過想試試看用CoreData來完成

03/04 14:11, , 5F
我想原PO的意思應該只是要產生很多個object (record)
03/04 14:11, 5F

03/04 14:11, , 6F
而不是不定key
03/04 14:11, 6F

03/04 14:12, , 7F
跑一個for不就好了?
03/04 14:12, 7F
好的,我來試試看! ※ 編輯: 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)

03/04 22:50, , 8F
這樣我會用plist
03/04 22:50, 8F

03/05 09:46, , 9F
我也有想過存成plist檔,不過想使用看看CoreData
03/05 09:46, 9F
文章代碼(AID): #1J5LKzhs (MacDev)
文章代碼(AID): #1J5LKzhs (MacDev)