Я часами ищу ответ, понятия не имею, что делать.
У меня есть JSON, который мне нужно сопоставить, который имеет массив строк без keyPath, но также имеет атрибут, который необходимо сопоставить, который имеет keyPath. Я использовал RestKit 0.21.0 и имел ту же ошибку при обновлении до RestKit 0.22.0.
JSON:
{
"content": {
"site": "www.inf.ufsc.br/~fcdocil",
"modulos": [
"noticias",
"fotos",
"conteudo"
]
}
}
RKResponseDescriptor:
RKEntityMapping *moduleMapping = [RKEntityMapping mappingForEntityForName:@"Module" inManagedObjectStore:store];
[moduleMapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:nil toKeyPath:@"type"]];
[moduleMapping addAttributeMappingsFromDictionary:@{@"@parent.site" : @"site"}];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:moduleMapping method:RKRequestMethodAny pathPattern:nil keyPath:@"content.modulos" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
Когда я запускаю это, он успешно отображает массив в 3 разных элементах, как вы можете видеть здесь:
SUCCESS (
"<Module: 0x8e54280> (entity: Module; id: 0x8cd31f0 <x-coredata://B31664A2-091E-43B8-9B36-EB7AF6C27292/Module/p4> ; data: {\n site = nil;\n type = noticias;\n})",
"<Module: 0x8e666b0> (entity: Module; id: 0x8cd3180 <x-coredata://B31664A2-091E-43B8-9B36-EB7AF6C27292/Module/p2> ; data: {\n site = nil;\n type = fotos;\n})",
"<Module: 0x8e66a60> (entity: Module; id: 0x8cd3170 <x-coredata://B31664A2-091E-43B8-9B36-EB7AF6C27292/Module/p3> ; data: {\n site = nil;\n type = conteudo;\n})"
)
Но он не сделал @parent.site
, чего я желаю:
SUCCESS (
"<Module: 0x8e54280> (entity: Module; id: 0x8cd31f0 <x-coredata://B31664A2-091E-43B8-9B36-EB7AF6C27292/Module/p4> ; data: {\n site = www.inf.ufsc.br/~fcdocil;\n type = noticias;\n})",
"<Module: 0x8e666b0> (entity: Module; id: 0x8cd3180 <x-coredata://B31664A2-091E-43B8-9B36-EB7AF6C27292/Module/p2> ; data: {\n site = www.inf.ufsc.br/~fcdocil;\n type = fotos;\n})",
"<Module: 0x8e66a60> (entity: Module; id: 0x8cd3170 <x-coredata://B31664A2-091E-43B8-9B36-EB7AF6C27292/Module/p3> ; data: {\n site = www.inf.ufsc.br/~fcdocil;\n type = conteudo;\n})"
)
Я использую CoreData для сохранения данных, и мой ManagedObject такой,
Module.h
@interface Module : NSManagedObject
@property (nonatomic, retain) NSString * type;
@property (nonatomic, retain) NSString * site;
@end
Module.m
@implementation Module
@dynamic type;
@dynamic site;
@end
Я действительно не знаю, что я делаю неправильно, поэтому любые предложения будут оценены. Спасибо