Restkit – 通过外键的核心数据一对一关系映射

我已经花了几个小时,尝试了解决这个问题的一些不同的解决scheme,通过查看类似的问题已经解决了StackOverFlow线程。

但是,我撞到了一堵砖墙。

一些背景。

使用Restkit 0.22和核心数据来坚持2个对象,并build立它们之间的关系。 我正在build模的两个对象如下所示,关系也包含在COAgendaItem和COMapItemLocation(目前不工作的关系)之间的One-One关系的forms以及COMapItemLocation和COAgendaItem(I还没有看过这个映射呢):

– COAgendaItem

在这里输入图像说明

– COMapItemLocation

在这里输入图像说明

他们有相应的属性和关系 在这里输入图像说明

期望的结果是使核心数据关系与RestKit一起工作,即通过COAgendaItem对象上的代码可以访问属性agendaItemLocation。

来自服务器的JSON响应看起来像这样

在这里输入图像说明

上面的JSON响应是COAgendaItem对象所需的数据加上COMapItemLocation对象的主键。 我有一个映射的COMAPItemLocation的主键location_id字段的问题。 (我有响应描述符和检索代码设置,它工作正常,它只是成为一个问题,因为我试图映射关系)

到目前为止,我已经修改了我的RKEntityMapping以尝试映射关系。

+ (RKMapping *)agendaItemMapping{ RKEntityMapping *agendaItemMapping = [RKEntityMapping mappingForEntityForName:@"COAgendaItem" inManagedObjectStore:[[COPersistenceCoordinator sharedCOPersistenceCoordinator]restKitObjectStore]]; [agendaItemMapping addAttributeMappingsFromDictionary:@{@"id": @"agendaItemID",@"title": @"agendaItemTitle",@"description": @"agendaItemDescription",@"start": @"agendaItemStartTime",@"end": @"agendaItemEndTime",@"category": @"agendaItemCategory",@"location_id" : @"agendaItemLocation"}]; [agendaItemMapping addConnectionForRelationship:@"agendaItemLocation" connectedBy:@"location_id"]; return agendaItemMapping; 

}

然而,这会导致启动时发生崩溃,如下所示(注意,我已经在默认映射中为外键添加@“location_id”:@“agendaItemLocation”映射,这是否必要)

在这里输入图像说明

我试着修改[agendaItemMapping addConnectionForRelationship:@"agendaItemLocation" connectedBy:@"location_id"]; 声明与所有的组合,我可以想到在单一的string和字典格式,即@ {“agendaItemLocation”:@“location_id”}但无论我尝试,它总是以前一样的错误'无法连接关系:无效的属性给定源实体“COAgendaItem”:location_id。

我完全沉迷于这一个,任何人都可以指出我做错了什么或需要做不同的事情吗?

提前感谢任何帮助! 🙂

你描述了两种不同的关系,但实际上你只有一个关系。 这是正确的,这只是你的描述是错误的(因此可能你对设置关系内容的理解)。

无法build立连接(并且出现错误),因为RestKit需要知道要连接的另一个对象的ID。 你要告诉它使用location_id ,但它需要是类的属性(通常是瞬态的),而不是JSON中的项目(因为连接是在JSON已经处理和消失之后进行的)。

将一个属性添加到实体和一个映射,以将location_id放入其中。 使用该属性的名称更新连接。