RestKit - POST响应对象映射

时间:2011-09-26 15:36:58

标签: objective-c ios json restkit

我的RESTful webservice(Rails)上有方法“getBuses”。该方法需要返回 我在JSON的公交车列表。但是,当我发送“/getBuses.json”请求时 需要发送

params = [NSDictionary 
dictionaryWithObjectsAndKeys: @"2011-08-16", @"datum", @"TRUE", 
@"fromSerbia", nil]; 

我发布了params因为我需要过滤响应(仅针对特定情况) 特定日期的旅行)。 然后,我期待这样的反应:

{ 
  "buses" : [ { 
    "bus_number" : "1", 
    "created_at" : "2011-08-15T23:07:52Z", 
    "id" : 1, 
    "lat" : 44.815, 
    "long" : 20.4665, 
    "model" : "Setra", 
    "registar_number" : "123456", 
    "seats" : 50, 
    "tour_id" : 1, 
    "updated_at" : "2011-08-15T23:07:52Z" 
  }, { 
    "bus_number" : "2", 
    "created_at" : "2011-08-15T23:07:52Z", 
    "id" : 2, 
    "lat" : 44.812, 
    "long" : 20.465, 
    "model" : "Mercedes", 
    "registar_number" : "2234", 
    "seats" : 60, 
    "tour_id" : 1, 
    "updated_at" : "2011-08-15T23:07:52Z" 
  } ] 
} 

我只需要带有Bus对象的NSArray。 您能否给我一些代码示例如何发出此请求并使用RestKit进行对象映射?

1 个答案:

答案 0 :(得分:5)

正如我在IRC频道中告诉你的那样,在你的RKClient实例中你可以使用这种方法:

(NSURL *)URLForResourcePath:(NSString *)resourcePath queryParams:(NSDictionary *)queryParams

所以你应该这样做:

[objectManager.mappingProvider setMapping:busesMapping forKeyPath:@"buses"];

params = [NSDictionary dictionaryWithObjectsAndKeys: @"2011-08-16", @"datum", @"TRUE", @"fromSerbia", nil];
NSURL *someURL = [objectManager.client URLForResourcePath:@"/service/getLocations.json" queryParams:params];

[objectManager loadObjectsAtResourcePath:[someURL absoluteString] delegate:self];

该方法使用resourcePath和您作为参数提供的参数构建有效的URL。然后你需要使用NSURL对象的absoluteString将其设置回来。希望这有帮助!