6

国のリストをロードするために、 RestKitを iPhone アプリケーションに使用しています。問題は、elementToPropertyMappings メソッドが辞書を使用して各オブジェクトをマップすることです。私の場合、Country クラスの name プロパティにマップしたい文字列の配列があります。

誰でもこれを行う方法を知っていますか?

elementToPropertyMappings

JSON 要素名からプロパティ アクセサーへのマッピングを含む辞書を返す必要があります

  • (NSDictionary *) RKObjectMappable.h で宣言された elementToPropertyMappings

私の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?
}
4

2 に答える 2

8

RKJSONParser の適切なインポートを理解することは、私にとって最も困難なことでした。

マッピング クラスでこれを達成する別の方法がある場合は、お知らせください。

単純な配列のロードに関連するコードを次に示します。

#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]]; 
}
于 2011-05-20T15:30:24.477 に答える
0

文字列の配列のサポートが v0.10 で追加されました:ソース

于 2012-08-23T14:45:35.460 に答える