如何告诉restkit使用哪个实体映射

时间:2013-07-09 05:00:13

标签: iphone ios restkit-0.20

我有一个iOS应用程序,它使用Restkit从服务器提取信息。我已经达到了使用多个CoreData实体的程度。我为restkit设置了一个新的实体映射,但是我从服务器的响应导致没有可映射的值,因为它使用了错误的实体映射。有人可以告诉我如何告诉它使用哪一个。

以下是两位地图制作者:

RKEntityMapping *articleEntityMapping = [RKEntityMapping mappingForEntityForName:@"Gist" inManagedObjectStore:managedObjectStore];
[entityMapping addAttributeMappingsFromDictionary:@{
 @"id.text":             @"gistID",
 @"title.text":          @"title",
 @"hashtags.text":       @"hashtags",
 @"imageUrl.text":       @"imageUrl",
 @"description.text":    @"summary",
 @"copy.text":           @"fullArticle",
 @"articleId.text":      @"articleId"}];
entityMapping.identificationAttributes = @[ @"gistID" ];

RKEntityMapping *userEntityMapping = [RKEntityMapping mappingForEntityForName:@"UserInfo" inManagedObjectStore:managedObjectStore];
[userEntityMapping addAttributeMappingsFromDictionary:@{
 @"firstName.text":      @"firstName",
 @"lastName.text":       @"lastName",
 @"birthDay.text":       @"birthDay",
 @"birthMonth.text":     @"birthMonth",
 @"birthYear.text":      @"birthYear"}];
userEntityMapping.identificationAttributes = @[ @"birthDay" ];

我认为identificationAttributes给了它提示但它似乎没有用。这两个实体之间没有关系。它们来自服务器端完全不相关的API。

以下是我用于发出使用articleEntityMapping

的请求的内容
[[RKObjectManager sharedManager] postObject:nil path:@"/rest/search?ip=255.255.255.0" parameters:search success:nil failure:nil];

以下是我使用userEntityMapping应该使用但不使用的请求。

[[RKObjectManager sharedManager] postObject:nil path:@"/rest/person/login?ip=255.255.255.0" parameters:postBody success:nil failure:nil];

1 个答案:

答案 0 :(得分:0)

您的映射只是故事的一半,另一半是响应描述符。虽然映射告诉RestKit如何转换接收的数据,但响应描述符告诉RestKit何时适合使用映射。这是通过路径模式和关键路径参数的组合来完成的。路径模式再次匹配用于获取数据的URL,因此您需要设置它。