Question

Je suis en train d'ajouter une classe de personne via iPhone à mon serveur.

Je le code suivant et je reçois cette erreur:

* Mettre fin à l'application du fait exception uncaught 'NSInvalidArgumentException', raison: '+ [objet personne]: sélecteur non reconnu envoyé à la classe 0x5fe6c' erreur

@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];
}
Était-ce utile?

La solution

pause Let vers le bas:

Mettre fin à l'application du fait exception uncaught 'NSInvalidArgumentException'

OK, vous avez une exception d'argument non valide. Pourquoi?

raison: « + [objet personne]:

Une méthode de classe appelée object a appelé la classe Person

sélecteur non reconnu envoyé à la classe 0x5fe6c » erreur

... mais la classe Personne ne met pas en œuvre la méthode de classe object. En regardant votre mise en œuvre de la personne, nous pouvons voir que tel est le cas.

Alors, où allons-nous appeler cela de? Une analyse rapide par Commentaires de MJA le code nous montre cette ligne:

Person *daveLiu = [Person object];

Ce qui est probablement votre coupable. Comme le dit MJA, cela devrait probablement être

Person *daveLiu = [Person alloc] init];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top