Задать вопрос

Почему RestKit выдает ошибку при мапинге?

Всем привет!)
Пытаюсь вникнуть в библиотеку RESTKit. Вникаю с помощью API вконтакте.
Я написал два метода:
NSURL *baseURL = [NSURL URLWithString:@"https://api.vk.com/method/"];
    AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:baseURL];
    

    RKObjectManager *objectManager = [[RKObjectManager alloc] initWithHTTPClient:client];
    

    RKObjectMapping *profilesMapping = [RKObjectMapping mappingForClass:[Profiles class]];
    [profilesMapping addAttributeMappingsFromArray:@[@"uid",
                                                     @"first_name",
                                                     @"last_name",
                                                     @"photo_max"]];

    RKResponseDescriptor *responseDescriptor =
    [RKResponseDescriptor responseDescriptorWithMapping:profilesMapping
                                                 method:RKRequestMethodGET
                                            pathPattern:@"users.get?user_id=1"
                                                keyPath:@"response"
                                            statusCodes:[NSIndexSet indexSetWithIndex:200]];
    
    [objectManager addResponseDescriptor:responseDescriptor];

Это метод конфигурирования RestKit

NSDictionary *params = @{@"fields": @"photo_max"};
    
    [[RKObjectManager sharedManager] getObjectsAtPath:@"users.get?user_id=1"
                                           parameters:params
                                              success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult){
                                               NSLog(@"%@", mappingResult.array);
                                           }
                                              failure:^(RKObjectRequestOperation *operation, NSError *error){
                                                  NSLog(@"%@", error);
                                                  NSLog(@":c");
                                              }
     ];


А этот уже загружает JSON и по сути должен мапить его, но выдает ошибку:
No mappable object representations were found at the key paths searched.", keyPath=null, NSLocalizedDescription=No response descriptors match the response loaded.


Не могу понять, где именно ошибка?

P.S. Сам запрос выглядит так https://api.vk.com/method/users.get?user_id=1&fiel...
  • Вопрос задан
  • 2492 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
sburavtsov
@sburavtsov
Игроразработчик широкого профиля
user_id=1 - тоже параметр, он должен быть в params, но не в pattern/path

RKObjectMapping *profilesMapping = [RKObjectMapping mappingForClass:[LVKUser class]];
    [profilesMapping addAttributeMappingsFromArray:@[@"uid",
                                                     @"first_name",
                                                     @"last_name",
                                                     @"nickname"]];
    
    RKResponseDescriptor *responseDescriptor =
    [RKResponseDescriptor responseDescriptorWithMapping:profilesMapping
                                                 method:RKRequestMethodGET
                                            pathPattern:@"users.get"
                                                keyPath:@"response"
                                            statusCodes:[NSIndexSet indexSetWithIndex:200]];
    
    [objectManager addResponseDescriptor:responseDescriptor];
    
    NSDictionary *params = @{@"fields": @"nickname", @"user_id": @"1"};
    
    [[RKObjectManager sharedManager] getObjectsAtPath:@"users.get"
                                           parameters:params
                                              success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult){
                                                  NSLog(@"%@", mappingResult.array);
                                              }
                                              failure:^(RKObjectRequestOperation *operation, NSError *error){
                                                  NSLog(@"%@", error);
                                                  NSLog(@":c");
                                              }
     ];
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы