Вопрос

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

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

* Заканчивающее приложение из -за исключения Unceant 'nsinvalidargumentException', причина: '+[Object 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];
}
Это было полезно?

Решение

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

Заканчивающее приложение из -за исключения Unceant 'nsinvalidargumentException'

Хорошо, у вас есть неверное исключение аргумента. Почему?

Причина: '+[Человек объект]:

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

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

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

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

Person *daveLiu = [Person object];

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

Person *daveLiu = [Person alloc] init];
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top