RestKit - загрузить простой массив

Я использую RestKit в своем приложении для iPhone, чтобы загрузить список стран. Проблема в том, что метод elementToPropertyMappings использует словарь для отображения каждого объекта. В моем случае у меня есть массив строк, которые я хотел бы сопоставить со свойством name в моем классе Country.

Кто-нибудь знает, как это сделать?

элементтопропертимаппингс

Должен возвращать словарь, содержащий сопоставление имен элементов JSON с методами доступа к свойствам.

  • (NSDictionary *) elementToPropertyMappings, объявленный в RKObjectMappable.h

Мои данные JSON

["Argentina","Australia","Austria","Belgium","Bolivia","Brazil","Bulgaria","Canada","Cayman Islands","China","Costa Rica","Croatia","Czech Republic","Denmark","Ecuador","Ethiopia","F.Y.R.O. Macedonia","Finland","France","French Polynesia","Germany","Guam","Hong Kong SAR","Indonesia","Ireland","Israel","Italy","Japan","Latvia","Lithuania","Luxembourg","Malaysia","Malta","Mexico","Morocco","Netherlands","New Zealand","Nicaragua","Norway","Papua New Guinea","Peru","Poland","Portugal","Puerto Rico","Qatar","Romania","Russia","Singapore","Slovakia","Slovenia","South Africa","South Korea","Spain","Sweden","Switzerland","Taiwan","United Arab Emirates","United Kingdom","United States","Venezuela","Vietnam"]

ОБНОВЛЕНИЕ:

Я понял, как использовать RKClient для выполнения запроса, чтобы пропустить функциональность сопоставления. Теперь мне нужно выяснить, какой класс использовать для разбора JSON. Парсер yajl-objc выглядит великолепно, но я не хочу включать еще один парсер, если это можно сделать с помощью библиотеки из RestKit.

-(void)loadLocations
{
    NSLog(@"loadLocations");
    RKObjectManager *objectManager = [RKObjectManager sharedManager];    
    [[RKClient sharedClient] get:@"/locations/countries.json" delegate:self];

}

- (void)request:(RKRequest*)request didLoadResponse:(RKResponse*)response {
    NSLog(@"Loaded payload: %@", [response bodyAsString]);
//    HOW CAN I PARSE THIS STRING INTO AN NSArray?
}

person jspooner    schedule 20.05.2011    source источник


Ответы (2)


Выяснение правильного импорта для RKJSONParser было для меня самой сложной задачей.

Если есть другой способ сделать это с помощью классов Mapping, сообщите мне.

Вот код, связанный с загрузкой простого массива.

#import <RestKit/Support/RKJSONParser.h> 
@implementation CountriesViewController
@synthesize countries;

-(void)loadLocations
{
    NSLog(@"loadLocations");    
    [[RKClient sharedClient] get:@"/locations/countries.json" delegate:self];
}

- (void)request:(RKRequest*)request didLoadResponse:(RKResponse*)response {
    NSLog(@"Loaded payload: %@", [response bodyAsString]);
    RKJSONParser* parser = [RKJSONParser new]; 
    countries =    [parser objectFromString:[response bodyAsString]]; 
}
person jspooner    schedule 20.05.2011
comment
Для v0.9.3 импорт должен быть #import <RestKit/Support/JSON/JSONKit/RKJSONParserJSONKit.h>, если вы используете JSONKit поочередно, вы также можете просто использовать [response parsedBody] - person Ronnie Liew; 28.08.2011
comment
и для текущей версии (0.10) вы должны использовать #import <RestKit/RKJSONParserJSONKit.h> с объектом RKJSONParserJSONKit вместо RKJsonParser - person Manuel van Rijn; 25.05.2012

В версии 0.10 добавлена ​​поддержка массива строк: Источник

person Or Arbel    schedule 23.08.2012