RestKit Warning - ПРЕДУПРЕЖДЕНИЕ. Не удалось сопоставить вложенный объект: (null) - PullRequest
1 голос
/ 27 февраля 2012

Я только начал изучать 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 по этой ссылке:

https://api.foursquare.com/v2/venues/search?ll=40.562362,-111.938689&limit=10&client_id=LEA1MYN1Z1QWSBFIOA1T4FREVVNF0R1ADQKMA0AMGL3CN5N4&client_secret=M2W204MKEAO4KV5L4ZXUYWK2GC32PO0KT5PWYJQBP4FKBTMO

Буду признателен за любую помощь или предложения, так как я действительно борюсь с этой проблемой.

Спасибо Vik

Ответы [ 2 ]

0 голосов
/ 23 сентября 2015

Я понимаю, что это старый вопрос, но я видел то же предупреждение. Причина в том, что у вас есть JSON, подобный этому {"response":{}}, который вы хотите отобразить на объект. Поскольку в объекте нет ключей, он по существу отображается на nil. Таким образом, предупреждение довольно безвредно. Вы не получите объект Response обратно, потому что сервер по существу возвратил что-то, что RestKit не может отобразить, потому что в JSON нет ключей, которые соответствовали бы любому из ваших сопоставлений атрибутов. RestKit сообщает вам об этом с предупреждением и отступает, чтобы не создавать объект.

0 голосов
/ 27 февраля 2012

Вы должны взглянуть на документы по сопоставлению объектов .

Ваши определения сопоставления не соответствуют json, который вы пытаетесь проанализировать.

...