RESTkit无法识别的选择器错误

问题描述:

我试图通过iPhone添加一个人类到我的服务器。RESTkit无法识别的选择器错误

我有以下的代码,我得到这个错误:

* Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[Person object]: unrecognized selector sent to class 0x5fe6c' error

@interface Data : NSObject { 
Person *person; 
NSArray *dogs; 
} 
@property (nonatomic ,retain) Person *person; 
@property (nonatomic ,retain) NSArray *dogs; 
@end 

@interface Person : NSObject { 

NSString *name; 
NSNumber *personId; 
NSDate *updatedAt; 
NSDate *createdAt; 

} 

@property (nonatomic , retain) NSDate * createdAt; 
@property (nonatomic , retain) NSDate * updatedAt; 
@property (nonatomic , retain) NSNumber *personId; 
@property (nonatomic , retain) NSString *name; 
@end 

RKObjectMapping* userMapping = [RKObjectMapping mappingForClass:[Person class]]; 

[userMapping mapKeyPath:@"created_at" toAttribute:@"createdAt"]; 
[userMapping mapKeyPath:@"updated_at" toAttribute:@"updatedAt"]; 
[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] loadObjectsAtResourcePath:@"/people"  
objectMapping:dataMapping delegate:self]; 


-(void)createObject{ 

RKObjectRouter * router = [RKObjectManager sharedManager].router; 
[router routeClass: [Person class] toResourcePath:@"/people/:personId"]; 
[router routeClass: [Person class] toResourcePath:@"/people"   
forMethod:RKRequestMethodPOST]; 
Data *data =[[Data alloc]init]; 
Person *daveLiu = [Person object]; 
daveLiu.name = @"Dave Liu"; 
[[RKObjectManager sharedManager] postObject:daveLiu delegate:self]; 
} 
+1

这条线是什么意思? Person * daveLiu = [Person object];不应该被分配] init]? – mja 2012-01-11 12:02:52

让我们来分析一下:

Terminating app due to uncaught exception 'NSInvalidArgumentException'

OK,你有一个无效的参数异常。为什么?

reason: '+[Person object]:

拜访了Person类

unrecognized selector sent to class 0x5fe6c' error

称为object类方法......但是Person类没有实现object类方法。看看你对Person的实现,我们可以看到情况是这样的。

那么,我们从哪里调用?通过 MJA的评论快速扫描 代码为我们展示了这条线:

Person *daveLiu = [Person object]; 

这可能是您的罪魁祸首。正如mja所说,这可能应该是

Person *daveLiu = [Person alloc] init]; 
+0

thnx很多家伙!!!!得到它=] – 2012-01-12 09:23:42

+0

[对象]是一个NSManagedObject + ActiveRecord的方法,并假定将一个实体插入上下文没有样板代码。它失败,因为restkit导入不正确。 – 2013-06-17 12:37:26