2013-05-10 4 views
1

У меня возникла проблема с отображением значения вложенного объекта.RestKit 0.20 вложенное сопоставление объектов (путь к дереву объектов разный)

я получил два объекта со следующими свойствами: )

class Input 
@property NSString value; 
@property NSString title; 

б)

class Profile 
@property Input myAwesomeInput; 

..so Профиль содержит объект ввода. Когда я перебираю объекты с помощью RestKit (0.20), я получаю sth. как это:

{ myAwesomeInput_test:{"value":"xyz","title":"a title"}} 

То, что я хочу достичь, это:

{myAwesomeInput_test:"xyz"} 

Так что я не хочу, чтобы отобразить "Input", но только Input.value. Возможно ли это?

На данный момент мой код выглядит следующим образом:

RKObjectMapping* inputMapping = [RKObjectMapping requestMapping]; 
[inputMapping addAttributeMappingsFromArray:@[@"value"]]; 

RKRequestDescriptor *reqDescInput = [RKRequestDescriptor requestDescriptorWithMapping:inputMapping objectClass:[Input class] rootKeyPath:nil]; 

RKObjectMapping* searchProfile = [RKObjectMapping requestMapping]; 
RKRequestDescriptor *reqDescSearchProfile = [RKRequestDescriptor requestDescriptorWithMapping:searchProfile objectClass:[SearchProfile class] rootKeyPath:nil]; 

[searchProfile addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"myAwesomeInput" toKeyPath:@"myAwesomeInput_test" withMapping:inputMapping]]; 

EDIT: (решена)

Хорошо я решил. Надеюсь, это так, как люди должны это делать. Вы можете напрямую обращаться из словаря.

RKObjectMapping* searchProfile = [RKObjectMapping requestMapping]; 
[aeSearchProfile addAttributeMappingsFromDictionary:@{ 
     @"myAwesomeInput.value": @"myAwesomeInput_test" 
}]; 

RKRequestDescriptor *reqDescSearchProfile = [RKRequestDescriptor requestDescriptorWithMapping:searchProfile objectClass:[SearchProfile class] rootKeyPath:nil]; 

ответ

3

Использовать ключевые пути, а не множественные сопоставления. Попробуйте это:

RKObjectMapping* searchProfile = [RKObjectMapping requestMapping]; 
[searchProfile addAttributeMappingsFromDictionary:@{ @"myAwesomeInput.value" : @"myAwesomeInput_test" }]; 

RKRequestDescriptor *reqDescSearchProfile = [RKRequestDescriptor requestDescriptorWithMapping:searchProfile objectClass:[SearchProfile class] rootKeyPath:nil]; 
+0

спасибо, я думаю, мы нашли/отправил ответ в то же время (посмотрите на время отвечал: D Во всяком случае, это будет хороший и быстрый способ для других, которые имеют тот же зонд еще раз спасибо. – jeven

Смежные вопросы