2013-03-21 37 views
6

對,只是清理這個問題,希望找到答案。完善我的魔法記錄導入

我一直在關注這個博客,讓我的導入工作。

http://www.cimgf.com/2012/05/29/importing-data-made-easy/

我設法進口完全工作時,JSON是形式...

[ 
    { 
     Name: "John Smith", 
     Id: 123, 
     Company: 
     { 
      Name: "Apple", 
      Id: 1 
     } 
    } 
] 

即當JSON包含實際的對象。

導入將找到該對象並更新現有對象,而不是創建一個新對象。

然而,一些JSON我有具有格式...

[ 
    { 
     Name: "John Smith", 
     Id: 123, 
     CompanyID: 1 
    } 
] 

而且無論我做什麼它創建副本。

請有人能告訴我什麼魔法記錄用戶信息設置是爲了讓這個工作。

+0

我已經嘗試了一個示例代碼爲您的問題(在公司實體唯一屬性名),請看看這是否有用。 – Anupdas 2013-03-23 21:27:07

+0

爲什麼使用兩個不同的JSON模型結構。如果這是一種優化,而且您知道公司對象已經存在,那麼您可以通過保留該「Id」來使用相同的結構? – Anupdas 2013-03-29 14:19:46

+0

這個例子只是針對這個問題,與我的應用程序不一樣。在我的應用程序中沒有叫Person或Company的對象。這兩種不同的結構與實際應用中完全不同的對象有關。我只是想讓這兩個工作。 – Fogmeister 2013-03-31 17:51:55

回答

6

感謝您的問題我能夠成功地使用MagicalRecord的導入功能,雖然我已經使用了一段時間。我能夠解決您的問題。

我想MagicalRecord使它成爲公司的Person和companyID使用personID的慣例。由於它在我們的控制之下,所以只知道一個警告。如果我錯了,請糾正我。從實體屬性中刪除下劃線後,它不再崩潰。

我已經完全測試了下面提到的解決方案,請參閱我使用的demo project code。所以隨時提出問題。

Company 
------------- 
companyID (unique) //Removed underscore from the property 
companyName 
------------- 
persons 

Person 
------------- 
personID (unique) //Removed underscore from the property 
firstName 
lastName 
------------- 
company 

這種格式:

{ 
     Id: 1, 
     FirstName: "John", 
     LastName: "Smith" 
     Company : 
     { 
      Id: 123 
     } 
    } 
} 

以下應在用戶信息可以在爲公司提供關係人

mappedKeyName : Company

relatedByAttribute : companyID(如JSON的鍵使用) (公司實體中的唯一產權名稱)

對於這個模型:

{ 
    Id: 1, 
    FirstName: "John", 
    LastName: "Smith" 
    CompanyId: 123 
} 

mappedKeyName : CompanyId(如JSON的鍵使用)

relatedByAttribute : companyID

+0

謝謝。我將在測試時回到我的電腦。 – Fogmeister 2013-03-24 00:49:55

+0

@Fogmeister你有導入工作嗎? – Anupdas 2013-03-25 09:21:15

+0

現在就回來吧。會讓你知道:D – Fogmeister 2013-03-25 09:32:23