2013-03-21 54 views
6

我正在嘗試使用Magical Record將數據導入到我的CoreData db。魔法記錄導入已有數據

我正在處理實體Person

A Person具有firstNamelastNamepersonID屬性。 (我知道我不需要idString,我沒有在內部使用它,它用於和服務器通話)。

無論如何,如果我已經有這個人......

firstName - John 
lastName - Smith 
personID - 1 

我下載JSON ...

[ 
    { 
     firstName: John, 
     lastName: Doe, 
     id: 1 
    }, 
    { 
     firstName: Michael, 
     lastName: Caine, 
     id: 2 
    }, 
    { 
     firstName: Angelina, 
     lastName: Jolie, 
     id: 3 
    } 
] 

我願意進口增加MichaelAngelina和將John Smith更新爲John Doe,因爲它已經存在相同的id與personID。

我已經設置了id和personID之間的mappedKeyName。

可以做到這一點嗎?我一直在閱讀這個博客...... http://www.cimgf.com/2012/05/29/importing-data-made-easy/關於自動映射的關鍵名稱等......並想知道我是否可以利用這個來做我想做的事情?

我已經閱讀了博客中有關relatedByAttribute的部分,但我不知道應該在哪裏設置它,以及該怎麼辦?

我應該在實體Person上設置它嗎?或者屬性personID?我應該怎麼設置它? 「ID」?或者是其他東西?

+0

看看[實現查找或創建高效](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdImporting.html#//apple_ref/ doc/uid/TP40003174-SW4)在「核心數據編程指南」中描述了一種很好的技術。 – 2013-03-21 09:58:44

+1

我已經在使用這個方法了,謝謝。我想遷移到魔法記錄以使用他們的「自動導入」方法。 – Fogmeister 2013-03-21 10:00:02

回答

6

我不確定您是否在Core Data模型的userInfo區域中使用relatedByAttribute設置。你在這裏沒有提到你的問題。我建議你仔細檢查一下。並且爲了澄清,它被稱爲relatedByAttribute,因爲您放入值部分的字符串是與實體相關的CoreData屬性,而不是json(或其他對象)數據。因此,請檢查這兩件事情,如果仍有問題,請在github上打開一張票,最好使用單元測試來幫助描述問題。

+0

感謝您的回答,我確實閱讀了關於relatedByAttribute,但認爲它是用於數據關係。無論如何,我已經更新了我的問題。謝謝。 – Fogmeister 2013-03-21 10:28:37

+0

我再次讀到這一點,我完全失去了應該在哪裏設置relatedByAttribute。這不是實體之間的關係我只是從JSON中導入單個Person實體。請你能讓我知道我需要設置relatedByAttribute和什麼?不知道是否應該將它設置在實體或屬性上,以及賦予它的值。在博客中,它只是在關係中提到它,但我沒有。 – Fogmeister 2013-03-21 11:01:58

+3

將其設置在實體上。在設置這個以避開數據庫術語時,我避免了「primaryKey」這個詞。不過,您可以將relatedByAttribute看作主鍵。 – casademora 2013-03-21 11:03:46