Ok, je suis nouveau dans la programmation d'Objective-C/iPhone, donc il y a quelques questions qui surgissent quand j'essaie de faire des choses qui seraient assez faciles en C++.Accès aux méthodes et aux variables d'autres classes/objets (où sont les objets btw)?
Je construis une application iPhone basée sur une barre d'onglets avec trois vues, une pour chaque bouton de la barre d'onglets. Dans la première vue, l'utilisateur crée un NSdictionary, que la deuxième vue doit afficher sous forme de graphique. Pour accéder à ce dictionnaire, je le sauvegarde dans un fichier .plist dans le premier contrôleur de vue, puis j'élabore un nouveau dictionnaire à partir de ce fichier .plist dans le second.
Pour faire la représentation graphique, j'utilise s7graphview, qui est initialisé dans SecondViewController, mais a ses propres fichiers .h et .m, que j'importe. La méthode de chargement des valeurs dans le graphe (qui provient du dictionnaire créé) est implémentée dans le fichier GraphInfoList.m, ce qui signifie que je dois créer un autre dictionnaire à partir du fichier .plist pour accéder aux données. Comment puis-je accéder au dictionnaire déjà créé? Pendant ce temps, j'ai également fait une méthode "dataFilePath", qui retourne le chemin du fichier .plist, que j'utilise pour charger les données dans un dictionnaire. Je n'ai trouvé aucun autre moyen d'implémenter cette méthode que de le copier/coller dans tous les fichiers .m qui l'utilisent! Il doit y avoir un autre moyen?
Un moment où je suis là: où sont les objets dans la programmation iPhone? Les fichiers .m sont des classes, n'est-ce pas? Je ne crée jamais un nouvel objet en utilisant le nouvel opérateur, et je pensais pouvoir accéder aux méthodes si j'avais un objet à appeler (comme [FirstViewController dataFilePath]). Je ne sais vraiment pas comment cela est géré dans Obj-C/Cocoa, et je ne sais pas quoi chercher pour trouver les réponses. L'aide serait vraiment appréciée.
Il existe généralement un mappage 1-1 entre les classes et les fichiers '.m'. Mais ce n'est pas une exigence. Vous pouvez implémenter plusieurs classes dans le même fichier '.m' ou, comme je le fais habituellement, étendre l'implémentation d'une classe à plusieurs' .m'-fichiers. La classe est lorsque vous tapez '@interface Name: Superclass', peu importe où vous le tapez. – PeyloW
oui, bon point, j'essayais juste de me référer rapidement à la façon dont il y pensait. –
Merci, en essayant de mettre la fonction dans le délégué de l'application maintenant, et faites comme ceci: Dans le appDelegate.h: - (NSString *) dataFilePath; .m: - (NSString *) dataFilePath { NSArray * paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); NSString * documentsDirectory = [chemins objectAtIndex: 0]; return [documentsDirectory stringByAppendingPathComponent: @ "data.plist"]; } Lorsque j'appelle NSString * myFilePath = [[[UIApplication sharedApplication] delegate] dataFilePath]; dans FirstViewController.m il dit que la méthode -dataFilePath n'est pas trouvée ... Qu'est-ce qui ne va pas? –