2010-02-15 7 views
0

J'ai du code qui récupère un fichier XML à partir d'une URL, puis l'analyse en utilisant NSXMLParser. Actuellement, ce code est contenu dans viewController qui l'appelle. Je souhaite, pour des raisons de réutilisation, déplacer le code d'analyse vers une classe externe et l'appeler depuis viewController.Comment appeler une méthode d'une classe importée dans Objective C?

J'ai essayé d'y parvenir comme suit:

créé un fichier de classe vide NSObject, mettre le code d'analyse syntaxique dans les fichiers .h .m, puis utilisé une déclaration #import dans mon fichier viewController.m et un @Class instruction dans le fichier viewController.h afin que je puisse appeler les méthodes à partir de la classe viewController.

Je ne suis pas sûr de savoir comment procéder ou si je suis approche de ce mal, s'il vous plaît conseiller.


J'instancier la classe externe avec la ligne suivante dans le @interface de mon viewController

XMLParser *xmlParser; 

En viewDidLoad pour ma classe viewController j'appelle une méthode que je l'ai écrit dans XMLParser.m. L'appel se fait comme suit:

[xmlParser fetchXML]; 

Le problème est que quand je compile je reçois l'avertissement suivant:

'XMLParser' may not respond to '-fetchXML' 

Lorsque la vue des charges lors de l'exécution de la méthode n'est pas appelé, ou il est appelé mais ne fonctionne pas

+1

Le code est-il placé dans une méthode de classe (commence par un +) ou une méthode d'instance (commence par un -)? Comment appelez-vous la méthode? Que se passe-t-il lorsque vous compilez et que se passe-t-il quand il s'exécute? – andyvn22

+1

On dirait que tout est correct. Quel est le problème? –

+0

@Rob Napier @ andyvn22 Voir la question mise à jour, merci les gars – conorgriffin

Répondre

3

Vous devriez avoir un fichier appelé XMLParser.h qui comprend quelque chose comme:

@interface XMLParser : NSObject 
{ 
    ... 
} 
- (void)fetchXML; 

Ensuite, dans viewController.m, il devrait y avoir:

#import "XMLParser.h" 

Je suppose que vous manquez une de ces étapes.

+0

Merci @Rob Napier, pas d'erreurs de compilation, il me manquait le '- (void) fetchXML;' Cependant, ma méthode ne semble toujours pas être appelé à runtime. Je peux poster plus de code si cela aide – conorgriffin

+0

Si votre méthode n'est pas appelée, la raison la plus courante est que votre pointeur est que xmlParser est nul. Envoyer un message à zéro ne génère pas d'erreur, mais ne fait rien. –

Questions connexes