2013-05-10 179 views
1

我遇到了映射嵌套對象值的問題。RestKit 0.20嵌套對象映射(對象樹的路徑不同)

我有兩個對象具有以下屬性: 一個)

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

B)

class Profile 
@property Input myAwesomeInput; 

..所以一個資料包含一個輸入的對象。當我用RestKit(0.20)繪製對象時,我得到了某物。像這樣:

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

我想實現的是:

{myAwesomeInput_test:"xyz"} 

所以我不想地圖 「輸入」,但只是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]]; 

編輯:(解決)

好,我解決了它。希望這是人們應該這樣做的方式。您可以直接從字典中尋址。

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

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

回答

3

使用keypaths而不是多個映射。 試試這個:再d無論如何,這將是爲別人誰具有相同的探頭一個很好的和快速的方式感謝:

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

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

感謝,我想我們找到/張貼的答案在同一時間(看的時候公佈。 – jeven 2013-05-10 17:40:15