Cast + Protocole + Datasource

Hello,
J'ai une question sur de la syntaxe Objective-C car parfois je ne saisis pas tout...
Lorsque j'écris ce code où reference est une méthode de mon referenceDataSource qui retourne un objet de type (reference*), et _wine une propriété de Reference.h, je me prends un : request for member _wine in something not a structure or union.
Pour palier ce problème, je caste sur l'appel de méthode, et déjà ça m'énerve parce reference renvoie un (Reference*) de toute façon.
A ce moment là , je n'ai plus le message.
Mais si je veux accéder à une propriété de _wine comme _id :
je me prends le même message sur _id comme quoi ce n'est pas une propriété et tout et tout : request for member _id in something not a structure or union
Cette fois, même en castant à nouveau, ça ne passe pas :
ça me désespère un peu de ne pas pouvoir faire tout simplement :
qui devrait marcher je pense...
Pour info, ma méthode de protocole appelée est :
où self._reference est évidemment un objet Reference.
J'ai une question sur de la syntaxe Objective-C car parfois je ne saisis pas tout...
Lorsque j'écris ce code où reference est une méthode de mon referenceDataSource qui retourne un objet de type (reference*), et _wine une propriété de Reference.h, je me prends un : request for member _wine in something not a structure or union.
[self.referenceDataSource reference]._wine
Pour palier ce problème, je caste sur l'appel de méthode, et déjà ça m'énerve parce reference renvoie un (Reference*) de toute façon.
(Reference*)[self.referenceDataSource reference]._wine
A ce moment là , je n'ai plus le message.
Mais si je veux accéder à une propriété de _wine comme _id :
(Reference*)[self.referenceDataSource reference]._wine._id
je me prends le même message sur _id comme quoi ce n'est pas une propriété et tout et tout : request for member _id in something not a structure or union
Cette fois, même en castant à nouveau, ça ne passe pas :
((Wine*)((Reference*)[self.referenceDataSource reference]._wine))._id
ça me désespère un peu de ne pas pouvoir faire tout simplement :
[self.referenceDataSource reference]._wine._id
qui devrait marcher je pense...
Pour info, ma méthode de protocole appelée est :
- (Reference*)reference<br />{<br /> return self._reference;<br />}
où self._reference est évidemment un objet Reference.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Ca sent un peu l'embrouille ça...
Ca t'embêterai de mettre le code de ton .h et .m qui concerne ton problème ? (le .h épuré qui montre la déclaration de ta variable d'instance Reference* + la declaration de ta @property associée, le .m épuré qui montre tes @synthesize et tes implémentations de setter+getter) ? Ca serait plus concret.
ReferenceModalViewController.h
ReferenceModalViewController.m
Le but est de créer un objet dataSource qui se transmet de contrôleurs en contrôleurs (en objet assign) et qui peut être édité par tous ces contrôleurs.
Là , j'ai bien une propriété _reference associée à ce contrôleur mais peut-être y-a-il mieux à faire ?
Le code :
est appelé dans les autres contrôleurs où je peux utiliser ce datasource transmis.
Je te joins les deux fichiers en PJ, chez moi dans mon projet de test avec juste cette classe ça ça compile et ça gueule pas quand je teste l'appel, dis moi si ça marche bien aussi chez toi et le cas échéant quelle différence tu vois avec ton code.
Le problème venait du fait que je me suis mis à utiliser @class en lieu et place de #import dans mes .h, et que je n'avais pas inclus le #import dans le .m où je fais appel à mon objet Reference. En conséquence, il ne trouvait pas la propriété _id de _wine.