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