2013-03-21 35 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