Подтвердить что ты не робот

RestKit 0.2, несколько способов сделать запрос GET, POST, PUT

Я немного запутался относительно способа использования restkit, кажется, что есть несколько способов сделать то же самое, до того, как я был доволен, просто возился с ним, пока он не сработал, но теперь он изменил структуру и использование в 0.20.x, И я потратил много времени на преобразование своего кода и теперь трачу еще больше времени, пытаясь заставить его работать, как раньше. И я искал некоторые примеры, и те, которые люди утверждают, что работают на них, не делают так много для меня, поэтому, должно быть, разница где-то, поэтому, возможно, кто-то может сказать мне разницу в следующем при попытке получите эти данные, по крайней мере, например, 1 и 2 (что не удается, но это вопрос о restkit github)

response.body={
"player": [
 {
  "_id": "50585c86ded998e77a000002"
 }
]
}

1.

[[RKObjectManager sharedManager].router.routeSet addRoute:[RKRoute routeWithClass:[Player class] pathPattern:@"player/fbid/:fID" method:RKRequestMethodGET]];

И чтобы получить игрока, что-то вроде этого:

Player *player = [Player new];
player.playerID = 2;
[[RKObjectManager sharedManager] getObject:player path:nil parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *result) 
{
// Request 
} failure:nil];

2.

Использование дескриптора ответа так.

RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor  responseDescriptorWithMapping:playerWtfMappingIn pathPattern:nil keyPath:@"player" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

[[RKObjectManager sharedManager] addResponseDescriptor:responseDescriptor];

[tempPlayer setFbID:[result objectForKey:@"id"]];

[objectManager getObject:tempPlayer path:nil parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult)
{

}
failure:nil];

3.

Или на самом деле blakes собственный exmaple на Wiki RestKit

RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:articleMapping pathPattern:nil keyPath:@"articles" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

NSURL URL = [NSURL URLWithString:@"http://restkit.org/articles"];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
RKObjectRequestOperation *objectRequestOperation = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[ responseDescriptor ]];
[objectRequestOperation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
    RKLogInfo(@"Load collection of Articles: %@", objects);
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
    RKLogError(@"Operation failed with error: %@", error);
}];

[objectRequestOperation start];

И я уверен, что есть много других способов. Мое подозрение, если кто-нибудь может подтвердить, что способ, которым вы должны настроить свой путь и используете ли вы один метод над другим, довольно сильно определяется набором данных, который вы пытаетесь сопоставить и это формат. Опять же, некоторые из них также выглядят иначе, чем то же самое? Благодаря

4b9b3361

Ответ 1

оба варианта верны. На самом деле, первый из них еще лучше, поскольку он централизует всю вашу конфигурацию в RKObjectManager. Для проекта, основанного на RestKit, я настоятельно рекомендую использовать способ ObjectManager:)

Вы даже можете пойти дальше и начать использовать маршруты, чтобы очистить свой код, см. вики об этой части:)

Надеюсь, что это поможет