2012-01-11 12 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オブジェクト]; alloc] init]をシャドウしないでください? – mja

答えて

1

はのは、それを打破してみましょう:

Terminating app due to uncaught exception 'NSInvalidArgumentException'

OK、あなたは無効な引数の例外があります。どうして?

reason: '+[Person object]:

objectというクラスメソッドは、Personクラス

unrecognized selector sent to class 0x5fe6c' error

に呼ばれていた...しかし、Personクラスはobjectクラスメソッドを実装していません。 Personの実装を見ると、これが当てはまることがわかります。

だから、どこから呼び出すのですか?

Person *daveLiu = [Person object]; 

おそらくあなたの犯人である: MJAのコメントを通じてクイックスキャンは コードは、私たちにこの行を示しています。 mjaさんの言うとおり、これはおそらくあります。

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

thnxたくさんの男!!!! got it =] –

+0

[オブジェクト]は、NSManagedObject + ActiveRecordのメソッドであり、定型句のコードなしでコンテキストにエンティティを挿入することになっています。 Restkitが正しくインポートされないため、失敗します。 –

関連する問題