RESTkit 代码 1001 找不到 keyPath: "'" 的对象



提前感谢社区的所有帮助!!我遇到了一个早期的问题,有人向我指出了这个问题,我修复了"[Person object]-应该是-->[Person alloc]init]我修复了它,现在可以向我的服务器添加一个Person对象了。但问题是,服务器上的所有值都为空,它返回了一个1001代码code=1001"找不到keyPath的对象映射:''"UserInfo=0x5938ce0{=RKObjectMapperKeyPath,NSLocalizedDescription=找不到keyPath的对象映射:"}我把什么画错了?有什么想法吗?中午在这里,感谢提供的任何帮助!如果你在社会上,我愿意为这件事的教训买单。Thnx又来了!

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];

我的服务器上的所有对象都是"匿名的",我也遇到了同样的问题,RestKit无法找到正确的映射。我修复它的方法是使用objectManager方法,让我包括映射:

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

所以现在我的合同都来自这样的服务器:

{
    "Id": "12345678-1234-1234-1234-1234567890ab",
    "Type": "SURVEY",
    "Code": "1234",
    "Description": "blah blah blah",
    "Message": "blah blah blah",
    "Url": "http://nowhere.com/",
    "NextAttemptHours": 4
}

可以映射到正确的对象中。保持对象映射可用是一项额外的工作,但它可以完成任务。我通过在我的对象上实现一个类方法来返回适当的objectMapping,这使事情变得非常干净和可理解。

最新更新