RESTkit нераспознанная ошибка селектора - PullRequest
0 голосов
/ 11 января 2012

Я пытаюсь добавить класс человека через iPhone на свой сервер.

У меня есть следующий код, и я получаю эту ошибку:

* Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «+ [объект Person]: нераспознанный селектор отправлен в класс 0x5fe6c» ошибка

@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 Ответ

1 голос
/ 11 января 2012

Давайте разберем его:

Завершение приложения из-за необработанного исключения 'NSInvalidArgumentException'

ОК, у вас недопустимый аргумент исключенияПочему?

причина: '+ [объект Person]:

Метод класса с именем object был вызван для класса Person

нераспознанный селектор отправлен в класс 0x5fe6c 'ошибка

... но класс Person не реализует метод класса object.Глядя на вашу реализацию Person, мы видим, что это так.

Итак, откуда мы это называем?Быстрый просмотр комментариев mja код показывает нам эту строку:

Person *daveLiu = [Person object];

Который, вероятно, ваш виновник.Как говорит Мя, это, вероятно, должно быть

Person *daveLiu = [Person alloc] init];
...