NSArray
macvelotte
Membre
Pour un premier programme cocoa, j'ai réalisé une calculette (notation polonaise inverse, 4 registres dans la pile, un registre mémoire, fonctions scientifiques "basiques").
Je souhaite rendre la (ou les) mémoire permanente, donc enregistrer les nombres contenus dans la pile et la mémoire.
En C, c'est trivial ! En objectiveC, j'avoue que je n'arrive à rien, et j'ai parfois la tentation d'abandonner, en ayant assez des messages du compilateur.
Ma question : comment déclarer un tableau (NSArray), y copier cinq nombres, l'nregistrer dans un fichier, et relire ce fichier automatiquement à l'ouverture de l'application ?javascript:replaceText('%20:-////',%20document.postmodify.message);
Je souhaite rendre la (ou les) mémoire permanente, donc enregistrer les nombres contenus dans la pile et la mémoire.
En C, c'est trivial ! En objectiveC, j'avoue que je n'arrive à rien, et j'ai parfois la tentation d'abandonner, en ayant assez des messages du compilateur.
Ma question : comment déclarer un tableau (NSArray), y copier cinq nombres, l'nregistrer dans un fichier, et relire ce fichier automatiquement à l'ouverture de l'application ?javascript:replaceText('%20:-////',%20document.postmodify.message);
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Par exemple, supposons que ton NSArray qui contient tes 5 nombres se nomme memArray.
Pour enregistrer ce tableau, fais ceci (à chaque fois que tu le modifies) :
Et pour relire ce tableau (à l'ouverture de ton appli), fais ceci :
Ton tableau sera stocké dans le fichier des préférences de ton appli.
.
[NSArray arrayWithArray:[NSUserDefaults standardUserDefaults] arrayForKey:@memArray]];
MAis je ne comprends pas comment inscrire une donnée dans le tableau (en l'occurence un "double".
J'ai de trop vieilles habitudes de pascal et de C !
Donc, tu ajoutes à l'array : [array addObject:[NSNumber numberWithDouble:d]]
NSNumber *n=[array lastObject];
double d = [n doubleValue];
ou :
double d = [[array lastObject] doubleValue];
réponse du compilateur : NSArray may not respond to -addObject ...
???
Pour faire un array modifiable, tu utilises NSMutableArray...
Tous essais négatifs.
En pascal ou C on aurait quelquechose du genre :
montableau:array[0..4] of double;
.../...
remplissage :
montableau[0]=X;
montableau[1]=Y;
etc ..
lecture :
X=montableau[0];
Y=montableau[1];
...
en cocoa, on peut faire la même chose simplement ?
Tu peux faire quelque chose du style :
puis tu modifies tes objets en fonction de leur place dans le tableau (index) :
maValeur étant un NSNumber...
Pour la lecture :
Tout ça de tête, essaie si ça marche.
Voilà
A+
donne :
donne :
donne :
.
Je crois que je vais dire adieu à cocoa : c'est trop bordelique.
Je ne sais pas si tu as déjà des connaissances en programmation objet, mais si tu veux te mettre à Cocoa, il faut déjà lire des tutoriaux.
Tu peux aller ici :
http://www.projectomega.org/main.php?lg=fr
Tu as des tutoriaux qui t'apprendront l'Objective-C et Cocoa.
Tu verras, une fois les bases compries, c'est autre chose....
Je te trouve sévère !
Objective-C et cocoa, de par leur aspect objet, sont 1000 fois moins bordéliques que C (ou que PASCAL).
.
Depuis que je me suis mis à Cocoa, je suis entré dans un nouvel univers que je ne veux plus quitter. D'ailleurs, j'ai totalement abandonné Carbon >:D
Cocoa n'est pas si complexe que ça pour les projets pas trop ambitieux bien sûr comme dans n'importe quel langage de programmation. 8)
Dans mon passé professionnel, j'ai enseigné la programmation en pascal ...
Etant entré dans ma huitième décade, mes neurones sont un peu plus lents ; il va fallooir que je les excite un peu.
Merci pour les réponses : j'aurai d'autres questions à poser. :-\\javascript:replaceText('%20:-////',%20document.postmodify.message);
Mauvaise excuse macvelotte
Je connais des programmeurs dans le neuvième décades et qui me décoiffent régulièrement par leur ingéniosité et réactivité !
Cocoa est parfait pour un esprit cartésien et ordonné. (même si nous ne sommes pas tous ici très ordonnés )
Ceci dit le passage de C ou C++ à Cocoa mérite largement quelques efforts ... et nous tâcherons d'être là pour te soutenir si tu le veux bien et si nous le pouvons.
P.S. puisque tu as laché une indiscrétion sur ton âge, pourquoi ne pas compléter ton profil ? et pourquoi ne pas te présenter ICI (JE LE DIS FORT EN CAS DE PRESBYACOUSIE) ? nous en serions forts heureux ! ::)
P.P.S. Fais le pour moi, j'en ai marre d'être le doyen sur ce site de jeunots
[edit Renaud: lien qui ne marchait plus suite à l'ajout du message de macvelotte]
Non non ClicCool, tu es irremplaçable dans ce rôle
Tu ne l'a visiblement pas dis assez fort .
Macvelotte: J'ai mis le post à sa place (voir le lien de cliccol), ne t'étonne pas si tu ne le vois plus ici.
Tout le monde ici sait que tu fais partie des meubles ClicCool ! ::)
Je te recommande un bon tutorial de calculette: le projet "Calculator" dans le livre "Building Cocoa Applications" de S.Garfinkel chez O'Reilly. On peut télécharger le code sur oreilly.com/catalog/buildcocoa.
C'est d'ailleurs le meilleur livre d'apprentissage que j'ai trouvé à ce jour.
Ne te décourage pas, perso j'ai appris plusieurs environnements de programmation et à chaque fois j'ai 3 mois de galère avant d'être un peu à l'aise.