Le problème que vous voyez est dû à un comportement de la classe NSManagedObject appelé stockage associatif.
Le stockage associatif transforme fondamentalement n'importe quel NSManagedObject générique en un dictionnaire dont les clés sont les noms de la propriété de l'entité qui lui est affectée. Vous définissez et accédez aux valeurs pour les clés, tout comme vous le feriez pour un dictionnaire ou toute autre classe conforme aux valeurs-clés. Ainsi, lorsque vous utilisez un objet géré générique comme celui-ci:
NSManagedObject * Event = [NSEntityDescription insertNewObjectForEntityForName:str inManagedObjectContext:app.managedObjectContext];
... vous obtenez une instance NSManagedObject générique avec les clés de l'entité str
telle que définie dans le modèle de données. Donc, quand vous pouvez utiliser le codage clé-valeur pour stocker la valeur dans l'instance NSManagedObject générique:
[Event setValue:[NSNumber numberWithInt:buf4[v+h]] forKey:value];
ou plus clairement quelque chose comme:
[Event setValue:[NSNumber numberWithInt:buf4[v+h]] forKey:@"anAttributeName"];
Cependant, la notation par points est quelque chose de différent. Lorsque vous appelez Event.anAttributeName
, vous appelez une méthode dans une sous-classe personnalisée de NSManagedObject. Pour que cela fonctionne, vous devez générer une sous-classe personnalisée avec le nom Event
et l'affecter à l'entité Event
dans le modèle de données.
Lorsque vous utilisez la notation point que vous appelez une méthode qui ressemble à quelque chose comme ceci:
-(void) setAnAttributeName:(NSNumber *) aNumber{
//some boilerplate
[self setPrimativeValue:aNumber forKey:@"anAttributeValue"];
// some more boilerplate
}
Vous pouvez écrire la méthode vous-même ou utiliser la directive du compilateur @dynamic
à faire pour mais de toute façon, vous devez avoir la méthode. Aucune méthode, aucune notation par points. Lorsque vous venez d'apprendre des données de base, il est préférable d'utiliser NSManagedObjects génériques et setValue:forKey:
de passer aux sous-classes NSManagedObject personnalisées.
Quelle est l'erreur que vous obtenez? –
"Voici mon code. – Emil
Bonjour Andrew H. Vous êtes nouveau sur le site. En tant que nouvel utilisateur, vous devez comprendre que les questions formulées ont aimé ceci - sans aucun détail qui pourrait aider quelqu'un à répondre à votre question, et aussi manquer de détails de vous sur ce que vous avez essayé de faire pour le résoudre jusqu'à présent. réponses de mauvaise qualité, si vous en avez.Vous devriez reformuler cette question (ne commencez pas une nouvelle, juste éditez celle-ci) et rendez le problème beaucoup plus clair. –