任何人都可以帮我在restkit 0.20中映射这个json对象吗?
"feeds" : [
{
"id": 32131354,
"caption": "Blah Blah Blah.",
"story" : "blah blah someone blah blah someone else",
"story_tags": {
"0": [
{
"id": 21231654,
"name": "Someone",
"offset": 0,
"length": 25,
"type": "page"
}
],
"33": [
{
"id": 3213212313,
"name": "Someone else",
"offset": 33,
"length": 12,
"type": "page"
}
]
},
}
{
...
}
]
我真的很感激任何帮助。这就是现在正在做的事情:
RKEntityMapping *feedsMapping = [RKEntityMapping mappingForEntityForName:NSStringFromClass([FacebookFeed class]) inManagedObjectStore:managedObjectStore];
feedsMapping.identificationAttributes = @[@"id"];
[feedsMapping addAttributeMappingsFromDictionary:@{
@"caption" : @"caption",
@"id" : @"id",
@"story" : @"story",
}];
这是关系映射
RKEntityMapping *facebookFeedStoryTagsMapping = [RKEntityMapping mappingForEntityForName:NSStringFromClass([FacebookFeedStoryTag class]) inManagedObjectStore:managedObjectStore];
facebookFeedStoryTagsMapping.identificationAttributes = @[@"id"];
[facebookFeedStoryTagsMapping addAttributeMappingToKeyOfRepresentationFromAttribute:@"offset"];
[facebookFeedStoryTagsMapping addAttributeMappingsFromDictionary:@{
@"(offset).id" : @"id",
@"(offset).length" : @"length",
@"(offset).name" : @"name",
@"(offset).type" : @"type",
}];
[feedsMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"story_tags" toKeyPath:@"story_tags" withMapping:facebookFeedStoryTagsMapping]];
但是我收到以下错误:
restkit.object_mapping:RKMappingOperation.m:745 Key path 'story_tags' yielded collection containing another collection rather than a collection of objects: (
(
{
id = 31314654654;
length = 25;
name = "Someone";
offset = 0;
type = page;
}
)
)
答案 0 :(得分:0)
JSON "0": [
提出了一个问题,因为我们真的想要一个字典(这就是你的映射的编写方式),但实际上我们有一个数组。这是您看到的错误的来源和含义。
理想情况下,您会更改JSON ...
现在,FacebookFeedStoryTag
需要将整个数组(及其包含的字典)映射到可转换属性中。这是因为映射无法处理嵌套数组。
您可以将此可转换属性设置为瞬态,并实现自定义setter / willSave
方法以获取数组并提取字典内容。由于密钥名称匹配,可以使用setValuesForKeysWithDictionary:
完成(尽管您需要处理offset
密钥)。