0

https://github.com/RestKit/RestKit/wiki/Object-mappingなどの利用可能なドキュメントを調べましたが、GET の結果をマップするための説明や例を見つけることができませんでした

  • (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects

(NSArray*)objects とは正確には何ですか?

サーバーから JSON オブジェクトを 1 つだけ返すと、次のようにマップできました。

NSString *bodyResults;
bodyResults = [[objectLoader response] bodyAsString];

NSDictionary *resultsDictionary = [bodyResults objectFromJSONString];

NSString *subject = [resultsDictionary  objectForKey:@"subject"];

しかし、JSON リスト (オブジェクトの選択) を返すようになったので、問題が発生しました。

get を送信する前に、オブジェクトをマップしています。

//提供マップ RKObjectMapping* OfferingMapping = [RKObjectMapping mappingForClass:[提供クラス]]; [offeringMapping mapKeyPath:@"categoryId" toAttribute:@"categoryId"]; [offeringMapping mapKeyPath:@"merchantId" toAttribute:@"merchantId"]; [offeringMapping mapKeyPath:@"name" toAttribute:@"name"]; [offeringMapping mapKeyPath:@"latitude" toAttribute:@"latitude"]; [offeringMapping mapKeyPath:@"longitude" toAttribute:@"longitude"];

[[RKObjectManager sharedManager].mappingProvider setMapping:offeringMapping forKeyPath:@"offering"];

double latitude = [(AppDelegate*)[[UIApplication sharedApplication] delegate] currentLatitude];
double longitude = [(AppDelegate*)[[UIApplication sharedApplication] delegate] currentLongitude];


NSString *latitudeString = [[NSNumber numberWithDouble:latitude] stringValue];
NSString *longitudeString = [[NSNumber numberWithDouble:longitude] stringValue];

NSDictionary *getParams = [NSDictionary dictionaryWithKeysAndObjects:
                            @"lat",latitudeString,
                            @"long",longitudeString,
                            nil];

[[RKObjectManager sharedManager] loadObjectsAtResourcePath:[@"/merchantofferings" stringByAppendingQueryParameters:getParams] delegate:self];

ありがとう

4

1 に答える 1

0

最初の質問への回答として、(NSArray *)objects は、objectLoader によってロードされたオブジェクトの配列です。したがって、あなたの場合、オブジェクト マッピングでマッピングした属性が入力されたタイプ Offering のオブジェクトである必要があります。

ここに投稿できる GET 要求から返される JSON のサンプルはありますか? それが有効な JSON であり、期待どおりに返されていると確信していますか?

于 2012-09-26T23:24:02.890 に答える