RestKit Warning - ПРЕДУПРЕЖДЕНИЕ. Не удалось сопоставить вложенный объект: (null)
Я только начал изучать RestKit. Я пытаюсь использовать это, чтобы получить близлежащие места, используя API Foursquare. но каждый раз, когда я пытаюсь " objectLoader:(RKObjectLoader *)objectLoader didLoadObjects:(NSArray *)objects ", я получаю это предупреждение "ПРЕДУПРЕЖДЕНИЕ: Неудачное отображение вложенного объекта: (null)".
Я действительно смущен. Ниже приведен мой код сопоставления, который находится в методе init:
_objectManager = [RKObjectManager objectManagerWithBaseURL:@"https://api.foursquare.com"];
RKObjectMapping *locationMapping = [RKObjectMapping mappingForClass:[Location class]];
[locationMapping mapKeyPath:@"address" toAttribute:@"address"];
[locationMapping mapKeyPath:@"city" toAttribute:@"city"];
[locationMapping mapKeyPath:@"state" toAttribute:@"state"];
[_objectManager.mappingProvider setMapping:locationMapping forKeyPath:@"location"];
RKObjectMapping *venueMapping = [RKObjectMapping mappingForClass:[Groups class]];
[venueMapping mapRelationship:@"location" withMapping:locationMapping];
[_objectManager.mappingProvider setMapping:venueMapping forKeyPath:@"groups"];
RKObjectMapping *responseMapping = [RKObjectMapping mappingForClass:[Response class]];
[responseMapping mapRelationship:@"groups" withMapping:venueMapping];
[_objectManager.mappingProvider setMapping:responseMapping forKeyPath:@"response"];
return self;
Ниже приведен код в "locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation "
NSString *resourceURLString = [NSString stringWithFormat:@"/v2/venues/search?ll=%f,%f&limit=10&client_id=LEA1MYN1Z1QWSBFIOA1T4FREVVNF0R1ADQKMA0AMGL3CN5N4&client_secret=M2W204MKEAO4KV5L4ZXUYWK2GC32PO0KT5PWYJQBP4FKBTMO",newLocation.coordinate.latitude, newLocation.coordinate.longitude];
[[RKObjectManager sharedManager] loadObjectsAtResourcePath:resourceURLString delegate:self];
[_locationManager stopUpdatingLocation];
и, наконец, этот код находится в " objectLoader:(RKObjectLoader *)objectLoader didLoadObjects:(NSArray *)objects "
_objects = [objects retain];
NSLog(@"object that i receive is %@",objects);
Ниже приводится ответ, который я получаю в консоли:
2012-02-26 13: 15: 39.872 restKitPractice [8609: 690b] W restkit.object_mapping: RKObjectMappingOperation.m: 372 ВНИМАНИЕ: Не удалось отобразить вложенный объект: (ноль) 2012-02-26 13:15:39.873 restKitPractice[8609:207] объект, который я получаю ( "Ответ: 0x6b5cb20")
Вы можете проверить Venues JSON от Foursquare по этой ссылке:
Буду признателен за любую помощь или предложения, так как я действительно борюсь с этим вопросом.
Спасибо Вик
2 ответа
Вы должны взглянуть на документы по сопоставлению объектов.
Ваши определения сопоставления не соответствуют json, который вы пытаетесь проанализировать.
Я понимаю, что это старый вопрос, но я видел то же предупреждение. Причина в том, что у вас есть JSON, как это {"response":{}}
что вы хотите отобразить на объект. Поскольку в объекте нет ключей, он по существу отображается на nil
, Таким образом, предупреждение довольно безвредно. Вы не получите Response
Возвратите объект, потому что сервер по существу возвратил что-то, что RestKit не может отобразить, потому что в JSON нет ключей, которые соответствовали бы любому из ваших сопоставлений атрибутов. RestKit сообщает вам об этом с предупреждением и отказывается от создания объекта.