2010-12-06 6 views
4

Existe-t-il un moyen de convertir un objet NSManagedObject en objet sous-classé?Transmettre NSManagedObject à l'objet sous-classé

je @interface Contact : NSManagedObject et dans une partie générique de mon code j'ai un NSManagedObject, je voudrais jeter aux Contact pour pouvoir accéder aux propriétés directement à l'aide contact.firstName etc ...

J'utilise Contact *contact = myManagedObject; qui fonctionne au moment de l'exécution, mais je reçois l'avertissement warning: incompatible Objective-C types initializing 'struct NSManagedObject *', expected 'struct Contact *' du compilateur que je voudrais supprimer.

Répondre

12

Utilisez un casting C:

Contact *contact = (Contact *) myManagedObject; 

Soyez conscient que cela est tout à fait un peu de corde. Corde parfois nécessaire, certainement.

+0

Bien sûr, devrait de le savoir, simple. Je vous remercie! –

+0

cela ne fonctionne pas pour moi: Contact * contact = (Contact *) objet; DLog (@ "La classe de contact est:% @", [classe de contact]); // imprime NSManagedObject contact.Address = addressObject; – wkhatch

+0

Si le modèle n'est pas défini pour créer des instances de votre sous-classe, vous obtiendrez des instances NSManagedObject. Le casting ne peut jamais changer la classe d'un objet. – bbum

Questions connexes