2012-06-22 14 views
5

Mam pewne problemy z odwzorowaniem tablicy JSON na narzędzie RestKit. Tak wygląda plik JSON:Jak mapować tablice JSON w pakiecie RestKit

{"issuelist":[ 
    { 
     "issue":[ 
      { 
       "id":1, 
       "beschreibung":"", 
       "name":"Test1" 
      }, 
      { 
       "id":2, 
       "beschreibung":"", 
       "name":"Test2" 
      } 
     ] 
    } 
]} 

Jestem zainteresowany tablicą "wydania". To jest mój mapowanie dla pojedynczego wydania:

RKObjectMapping *objectMapping = [RKObjectMapping mappingForClass:[self class] usingBlock:^(RKObjectMapping *mapping) { 
     [mapping mapAttributes:@"name", @"beschreibung", nil]; 
     [mapping mapKeyPathsToAttributes: 
       @"id", @"identifier", 
       nil]; 
    }]; 

A oto w jaki sposób skonfigurować mój ObjectMapping

RKObjectMappingProvider *omp = [RKObjectManager sharedManager].mappingProvider; 

RKObjectMapping *issueMapping = [Issue mapping]; 
[omp addObjectMapping:issueMapping]; 

[omp setObjectMapping:issueMapping forKeyPath:@"issuelist.issue"]; 

Niestety to nie działa. Mam wyjście dziennika tak:

 

    T restkit.object_mapping:RKObjectMappingOperation.m:152 Found transformable value at keyPath 'name'. Transforming from type '__NSArrayI' to 'NSString' 
    W restkit.object_mapping:RKObjectMappingOperation.m:232 Failed transformation of value at keyPath 'name'. No strategy for transforming from '__NSArrayI' to 'NSString' 
    T restkit.object_mapping:RKObjectMappingOperation.m:339 Skipped mapping of attribute value from keyPath 'name to keyPath 'name' -- value is unchanged ((null)) 
    T restkit.object_mapping:RKObjectMappingOperation.m:322 Mapping attribute value keyPath 'beschreibung' to 'beschreibung' 
    T restkit.object_mapping:RKObjectMappingOperation.m:152 Found transformable value at keyPath 'beschreibung'. Transforming from type '__NSArrayI' to 'NSString' 
    W restkit.object_mapping:RKObjectMappingOperation.m:232 Failed transformation of value at keyPath 'beschreibung'. No strategy for transforming from '__NSArrayI' to 'NSString' 
    T restkit.object_mapping:RKObjectMappingOperation.m:339 Skipped mapping of attribute value from keyPath 'beschreibung to keyPath 'beschreibung' -- value is unchanged ((null)) 
    T restkit.object_mapping:RKObjectMappingOperation.m:322 Mapping attribute value keyPath 'id' to 'identifier' 
    T restkit.object_mapping:RKObjectMappingOperation.m:152 Found transformable value at keyPath 'id'. Transforming from type '__NSArrayI' to 'NSString' 
    W restkit.object_mapping:RKObjectMappingOperation.m:232 Failed transformation of value at keyPath 'id'. No strategy for transforming from '__NSArrayI' to 'NSString' 
    T restkit.object_mapping:RKObjectMappingOperation.m:339 Skipped mapping of attribute value from keyPath 'id to keyPath 'identifier' -- value is unchanged ((null)) 
    D restkit.object_mapping:RKObjectMappingOperation.m:624 Finished mapping operation successfully... 

Wydaje się jakby RestKit stara się odwzorować cały arry w jednej kwestii, zamiast tworzyć szereg zagadnień. Jak muszę zmienić swoje mapowanie, aby to poprawić?

Dzięki za pomoc!

Odpowiedz

9

Spróbuj tego:

RKObjectMapping* issueMapping = [RKObjectMapping mappingForClass: [Issue class] usingBlock:^(RKObjectMapping *mapping) { 
    [mapping mapAttributes:@"name", @"beschreibung", nil]; 
    [mapping mapKeyPathsToAttributes: 
    @"id", @"identifier", 
    nil]; 
}]; 
issueMapping.rootKeyPath = @"issue"; 
[omp setObjectMaping: issueMapping forKeyPath: @"issuelist"]; 

mówi Ten, gdy issuelist keypath napotkaniu Użyj issueMapping. A następnie mówi dla każdego problemu root, stworzyć obiekt problemu.

+0

Dzięki! To było pomocne! – thalador

Powiązane problemy