2012-01-11 69 views
0

我試圖通過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

回答

1

讓我們來分析一下:

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

相關問題