2011-10-25 229 views
2

我正在使用核心數據來存儲以「關係」形式發送的服務器的數據。從關係數據(iOS)快速創建核心數據關係

比如,我從服務器獲取的數據看起來是這樣的(實際的格式有所不同,但足夠相似)

Users: [{PK: 1, Name: 'A B'}, {PK: 2, Name: 'C D'}, {PK: 3, Name: 'E F'}] 
Posts: [{PK: 1, UserPK: 1, Content: '...'}, {PK: 2, UserPK: 3, Content: '...'}] 

我的核心數據模型具有用戶和崗位之間設置的關係,它的工作原理應該如此。但是,我的問題是,當我從服務器接收到新的數據集時,儘可能快地創建這些對象及其關係(不使用大量RAM)。

問題是將帖子與用戶關聯。 「正常」的方法是基本上寫post.user = user;然而,這需要我從磁盤加載user

我目前的計劃是加載所有用戶,對其進行錯誤處理並創建一個將PK映射到實際對象的NSDictionary。這樣我就可以快速找到需要與該帖子關聯的用戶。然而,對於本質上應該是相當平凡的操作,這種解決方案似乎有點複雜。

回答

2

你保持用戶存儲在NSDictionary的解決方案是合理的。只要你把他們置於故障狀態,他們就不應該留下太多的回憶。故障的MO是微小的

0

我有一個非常類似的情況,最終沒有將數據導入到核心數據可言,因爲重複進口數百個數據對象加關係的地方實在是太慢了。事實證明,我爲這種格式編寫的解析器足夠快,可以實時讀取數據(而滾動tableviews等),所以我基本上只是將原始數據保存到磁盤。

解析器需要擴展,它現在輸出類似於託管對象的數據對象,它允許使用KVC查詢原始數據。

我一直使用Core Data來保存用戶編輯,並引入了一個數據管理器類來將兩個數據源結合在一起。

不太你問什麼,我猜想,但也許它可以幫助...