使用RestKit和CoreData获取对象并将其与先前保存的对象相关联

时间:2014-06-17 14:30:09

标签: ios objective-c core-data restkit

我需要使用从Web服务器下载的外国ID来关联实体。我有一个事件 - 类别(一个事件有类别,一个类别有很多事件)。用于获取所有类别的Web服务,以及用于获取所有事件的第二个Web服务。

这是网络服务返回的json:

类:

[ 
 { "id" : "1",
    "name" : "music",
  },
  { "id" : "2",
    "name" : "sports",
  },
  { "id" : "3",
    "name" : "meetup"
  }
]

事件:

[ 
  { "category_id" : "1",
    "description" : "free concert",
    "id" : "7791"
  },
  { "category_id" : "2",
    "description" : "Running event",
    "id" : "8357"
  }
 ]

我正在我的Events实体上保存category_id(两个实体的RestKit映射工作正常)。

现在,要显示事件的类别,我需要使用category_id并对核心数据执行获取请求,而不是使用getter(event.category.categoryID)。

有没有办法在执行事件的GET后配置RestKit(和/或CoreData)来关联这两个实体?我正在使用RestKit 0.20.3。

1 个答案:

答案 0 :(得分:0)

我的不好,我没有仔细阅读文档。这是如何做到的(基于this stackoverflow的答案):

NSEntityDescription *eventEntity = [NSEntityDescription entityForName:NSStringFromClass([Event class]) inManagedObjectContext:store.mainQueueManagedObjectContext];
NSRelationshipDescription *categoryRelationship = [eventEntity relationshipsByName][@"category"];
RKConnectionDescription *connection = [[RKConnectionDescription alloc] initWithRelationship:categoryRelationship attributes:@{ @"categoryID": @"categoryID" }];

//entity mapping is the event's mapping like: RKEntityMapping *entityMapping = [RKEntityMapping mappingForEntityForName...
[entityMapping addConnection:connection];

必须在核心数据中正确配置关系“类别”。

对我来说就是这个伎俩。