2013-05-29 3 views
0

Как я могу сопоставить вложенные объекты того же типа? у меня есть XML с объектами, которые могут содержать несколько объектов одного и того же типа:RestKit ios вложенные объекты того же типа

<entry location="l1"> 
    <entry location="l1.1"> 
     <entry location="l1.1.1"> 
     </entry> 
     <entry location="l1.1.2"> 
     </entry> 
    </entry> 
</entry> 

я получить бесконечную рекурсию, если я добавить propertymapping с тем же отображения:

+ (RKObjectMapping *)objectMapping { 
    RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[Entry class]]; 
    [mapping addAttributeMappingsFromDictionary:@{@"location": @"location"}]; 
    [mapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"nextEntries" 
                      toKeyPath:@"entries" 
                      withMapping:[Entry objectMapping]]]; 

    return mapping; 
} 

это возможно добавить под-объекты в массив каждого родительского объекта?

веселит

// редактировать: Следующий код работает для меня:

+ (RKObjectMapping *)objectMapping 
{ 
    RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[Entry class]]; 
    [mapping addAttributeMappingsFromDictionary:@{@"location": @"location"}]; 

    RKObjectMapping *innerMapping = [RKObjectMapping mappingForClass:[Entry class]]; 
    [innerMapping addAttributeMappingsFromDictionary:@{@"location": @"location"}]; 

    [mapping addPropertyMapping:[RKRelationshipMapping 
     relationshipMappingFromKeyPath:@"entry" 
     toKeyPath:@"entries" 
     withMapping:innerMapping]]; 

    return mapping; 
} 

ответ

2

Я не пробовал, так что я не знаю, если это будет работать, но попробовать это:

+ (RKObjectMapping *)objectMapping 
{ 
    RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[Entry class]]; 
    [mapping addAttributeMappingsFromDictionary:@{@"location": @"location"}]; 

    RKObjectMapping *innerMapping = [RKObjectMapping mappingForClass:[Entry class]]; 
    [innerMapping addAttributeMappingsFromDictionary:@{@"location": @"location"}]; 

    [mapping addPropertyMapping:[RKRelationshipMapping 
     relationshipMappingFromKeyPath:@"nextEntries" 
     toKeyPath:@"entries" 
     withMapping:innerMapping]]; 

    return mapping; 
} 

Не уверен, что toKeyPath:@"entries" является правильным, возможно, оно должно быть toKeyPath:@"entry" на основе вашего XML.

Бесконечная рекурсия состоит в том, что вы вызываете один и тот же метод от себя ([Entry objectMapping]), он не имеет ничего общего с отображением как таковым.

+0

большое спасибо, он работает! – kampfgnu

+0

Примите правильные ответы или помогите решить проблему. Благодаря :) – Wain

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