Код RESTkit 1001 не может найти объект для keyPath: "'" - PullRequest
0 голосов
/ 12 января 2012

Заранее спасибо всем за помощь сообщества !!У меня была ранняя проблема, на которую мне указали, и я исправил "[Person object] - должно быть -> [Person alloc] init] я исправил это и теперь могу добавить объект Person сейчас на мой сервер. Но вотпроблема, все значения на сервере являются нулевыми, и он отбрасывает код 1001 Code = 1001 "Не удалось найти сопоставление объекта для keyPath: ''" UserInfo = 0x5938ce0 {= RKObjectMapperKeyPath, NSLocalizedDescription = Не удалось найти сопоставление объекта для keyPath:''} что я делаю неправильно, какие-либо идеи? Noobie здесь и будем благодарны за любую помощь! О, да, я готов платить за уроки по этому вопросу, если вы в socal. Спасибо еще раз!

RKObjectMapping* userMapping = [RKObjectMapping mappingForClass:[Person class]];
 [userMapping mapKeyPath:@"updated_at" toAttribute:@"updatedAt"];
[userMapping mapKeyPath:@"created_at" toAttribute:@"createdAt"];
[userMapping mapKeyPath:@"name" toAttribute:@"name"]; 
[userMapping mapKeyPath:@"id" toAttribute:@"personId"];

RKObjectMapping* dogMapping = [RKObjectMapping mappingForClass:[Dog class]];
[dogMapping mapKeyPath:@"created_at" toAttribute:@"createdAt"]; 
[dogMapping mapKeyPath:@"person_id" toAttribute:@"spersonId"]; 
[dogMapping mapKeyPath:@"name" toAttribute:@"name"]; 
[dogMapping mapKeyPath:@"updated_at" toAttribute:@"updatedAt"]; 
[dogMapping mapKeyPath:@"id" toAttribute:@"dogId"]; 

RKObjectMapping *dataMapping = [RKObjectMapping mappingForClass:[Data class]]; 
[dataMapping mapKeyPath:@"dog" toAttribute:@"dogs"]; 
[dataMapping mapKeyPath:@"person" toRelationship:@"person" withMapping:userMapping]; 
[[RKObjectManager sharedManager].mappingProvider addObjectMapping:dataMapping]; 

[[RKObjectManager sharedManager].mappingProvider setMapping:userMapping 
forKeyPath:@"people"];

RKObjectRouter * router = [RKObjectManager sharedManager].router;
[router routeClass: [Person class] toResourcePath:@"/people/:personId"];
[router routeClass: [Person class] toResourcePath:@"/people" 
forMethod:RKRequestMethodPOST];

RKObjectMapping *personSerializationMapping= [RKObjectMapping mappingForClass:
[NSMutableDictionary class]];
[personSerializationMapping mapAttributes:@"name", nil];
[[RKObjectManager sharedManager].mappingProvider 
setSerializationMapping:personSerializationMapping forClass: [Person class]];

Person* daveLiu =[[[Person alloc]init]autorelease];
daveLiu.name = @"dave";
[[RKObjectManager sharedManager] postObject:daveLiu  delegate:self];

1 Ответ

1 голос
/ 29 марта 2012

Все мои объекты с моего сервера являются "анонимными", и у меня была такая же проблема с RestKit, что я не смог найти правильное сопоставление.Чтобы исправить это, я использовал методы objectManager, которые позволили мне включить отображение:

[objectManager postObject:object mapResponseWith:[object objectMapping] delegate:self];
[objectManager loadObjectsAtResourcePath:path objectMapping:mapping delegate:self];

Так что теперь мои контракты, которые все приходят с сервера, выглядят так:быть сопоставлен с правильным объектом.Чтобы сделать доступными сопоставления объектов, требуется дополнительная работа, но она выполняет свою работу.Я сделал это, реализовав метод класса на моих объектах, чтобы вернуть соответствующий объектMapping, который делает вещи очень чистыми и понятными.

...