RestKit - 加载一个简单的数组

jsp*_*ner 6 iphone ios4 restkit

我在我的iPhone应用程序中使用RestKit来加载国家列表.问题是elementToPropertyMappings方法使用字典来映射每个对象.在我的情况下,我有一个字符串数组,我想映射到我的Country类的name属性.

有人知道怎么做吗?

elementToPropertyMappings

必须返回包含从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"]
Run Code Online (Sandbox Code Playgroud)

更新:

我想出了如何使用RKClient发出请求,以便跳过映射功能.现在我需要弄清楚用于JSON解析的类.yajl-objc解析器看起来很棒,但如果可以使用RestKit中的lib完成,我不想包含另一个解析器.

-(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?
}
Run Code Online (Sandbox Code Playgroud)

jsp*_*ner 8

弄清楚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]]; 
}
Run Code Online (Sandbox Code Playgroud)

  • 对于v0.9.3,导入应该是`#import <RestKit/Support/JSON/JSONKit/RKJSONParserJSONKit.h>`如果你交替使用JSONKit,你也可以只使用`[response parsedBody]` (3认同)
  • 对于当前版本(0.10),您应该使用`#import <RestKit/RKJSONParserJSONKit.h>`和`RKJSONParserJSONKit`对象而不是`RKJsonParser` (2认同)