RestKit - сопоставление объекта ответа POST - PullRequest
3 голосов
/ 26 сентября 2011

У меня есть метод "getBuses" на моем веб-сервисе RESTful (Rails). Этот метод должен вернуть мне список автобусов в формате JSON. Но, когда я отправляю запрос на "/getBuses.json", я нужно отправить

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

Я публикую параметры, потому что мне нужен отфильтрованный ответ (только для конкретных тур на конкретную дату). Тогда я ожидаю ответа, подобного этому:

{ 
  "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" 
  } ] 
} 

Мне просто нужен NSArray с объектами Bus. Можете ли вы привести пример кода, как сделать этот запрос и сопоставить объект с помощью RestKit?

1 Ответ

5 голосов
/ 26 сентября 2011

Как я уже говорил вам на 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];

Этот метод создает действительный URL-адрес, используя resourcePath и параметры, которые вы задаете в качестве параметра.И затем вам нужно установить его обратно, используя absoluteString объекта NSURL.Надеюсь, это поможет!

...