Tester un tableau (null)
muqaddar
Administrateur
J'initialise un tableau avec le contenu d'un fichier qui peut-être vide.
Je voudrais donc tester le tableau pour savoir s'il est (null) ou pas.
Je ne peux faire : if ([array count] == 0) car le tableau est vraiment vide.
De même, if (array == nil) ne semble pas bon. Quel est donc le bon moyen ? merci
Je voudrais donc tester le tableau pour savoir s'il est (null) ou pas.
Je ne peux faire : if ([array count] == 0) car le tableau est vraiment vide.
De même, if (array == nil) ne semble pas bon. Quel est donc le bon moyen ? merci
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
EDIT :
je fais ça :
saveArray = [[NSMutableArray alloc] initWithContentsOfFile:filePath];
Or le filePath peut être vide. (le contenu du fichier, le fichier est bien là lui)
Donc je veux tester si le tableau est plein ou vide car même si le filePah est vide, je suppose qu'il est initialisé non ?
P'têt, p'têt pas ???
PS: je tiens à signaler que pour les RTFM, je dis ça pour te taquiner, sinon je ne donnerais la réponse.
Un petit tuyau, plutôt que de comparer à nil, tu fais [tt]if (array) //code si le tableau est OK[/tt], c'est plus léger comme écriture.
À la limite, on pourrait imaginer qu'il y ait une erreur qui s'est glissée pour des fonctions hyper-spécialisées, mais pas pour ce genre de méthodes là .
Et toto ne s'affiche pas. filePath a été créé comme cela :
Le fichier vierge est bien créé sur le HD.
donc saveMailsArray est bien nil
ce qui est logique puisque ton fichier a beau exister, il est vide et que initWithContentsOfFile renvoie
if (!saveMailsArray) {
Excuse moi d'insister sur les problèmes de lecture, mais je trouve que là il y a un problème que tu dois vraiment résoudre. Surtout sur une réponse qui fait 2 phrases, qu'on ne peut même pas dire que tu n'as pas lu parce noyée dans la masse, vu tu y as répondu.
Sinon petit truc, tu n'es pas obligé de tester l'existence du fichier, puisque [tt]-initWithContentOFile:[/tt] le fait pour toi.
Excuse moi, mais je ne comprends rien à ce que tu me dis ou reproches là . J'ai testé avec if (array) comme tu l'avais dit plus haut, de suite, et j'ai donné le code, voir 4 messages plus haut, alors quelle est encore cette histoire de lecture que tu sors là ?
*ou bien indique clairement dans ton post 'youpi ça marche', mais de toute façon la réponse que tu donnais à ClicCool laisse largement penser que tu ne comprenais pas pourquoi toto ne s'affichait pas.
1) Dans le premier message, je parle moi même de if (array == nil), je m'étonne que ça ne marche pas, vu la doc.
2) Tu me reproches ensuite de ne pas avoir lu la doc sur ce coup, et me la sors ou on parle de nil, et tu dis : "je ne veux pas te donner la réponse", comme si elle était cachée, alors qu'il t'aurait suffit en 1 phrase de me dire : "vu la doc, tu as bon, if (array == nil) doit marcher, donc vérifie la suite de ton code". Mais tu préfères jouer avec moi...
3) Tu me proposes en code if (array) qui teste ta présence du tableau initialisé.
4) Je confirme avec mon code et if (array). Effectivement, j'ai omis le "!" , faute d'inatention.
Ce code, je le connais par coeur, c'est une simple erreur de frappe.
5) Je confirme ensuite dans la joie et bonne humeur que ça marche avec le "!" en plus...
6) La discussion est close mais tu reviens à la charge, sur la lecture. Je veux bien que tu me dises que j'ai du mal à comprendre la doc Apple en Anglais et son organisation comme beaucoup ici, mais de là à tirer des conclusions sur ma façon de lire, comme tu le fais à chaque message maintenant, c'est un peu désagréable.
7) Pour info, je me tapais la doc de php en anglais sans problème pendant 2 ans... et ça m'a jamais posé problème.
8) Et puis, si on peut plus poser de questions, cons ou pas, sur ce forum, y'a qu'à le supprimer.
9) Souvent, c'est en posant les questions qu'on trouve les réponses.
10) A part ça, il fait beau ici. Et c'est une magnifique journée de printemps où les oiseaux nous offrent une belle symphonie de sons en tous genres, dans le terroir catalan.
4.5. Dans ce cas, je présente mes excuses, mais je n'aurais pas pu le deviner. Je n'aurais pas réagi si tu avais édité ton code en indiquant par exemple que tu avais une faute de frappe (pour que ça colle avec la réflexion de ClicCool, s'il avait répondu avant que tu aies remarqué la faute), parce que quand tu dis que ça marche après le commentaire de ClicCool on peut facilement imaginer que tu as compris grâce à son intervention.
6.8. ça fait presque 10 mois que tu as commencé Cocoa, il y a des fautes que tu ne dois plus faire. Ne pas remarquer qu'un argument doit être d'une classe donnée, ou s'étonner qu'un objet ne réponde pas à un sélecteur donné est pour moi une faute de lecture ou d'inattention et donc oui, je mets en cause la manière dont tu lis la doc. Donc je réagis avec un RTFM (je ne le ferais pas avec un type qui vient de commencer). Pour moi te donner la réponse clairement dans ce genre de cas n'est pas rendre service (je le fais volontiers quand la réponse est tordue, comme pour les dates par exemple, vu que même pour des gens expérimentés la réponse n'est pas évidente).
10. ici aussi.
11. J'aimerais que tu vires les posts qui ne concernent pas la question, nos batailles de chiffoniers ne sont pas pertinentes pour la réponse à la question.
uh ? j'ai lu que si on envoie un message à une objet nil, le résultat est 0 (tel que implémenté par le 'runtime' objective-c)... donc si on fait
ça doit être suffisant: si saveMailsArray est nil, [saveMailsArray count] renvoie 0, et comme 0 > 0 est faux, le code à l'endroit "// c'est bon" n'est pas exécuté, ce qui est le but recherché...
Ok au concours du code le plus court, t'es le plus fort de l'ouestÂ
Seulement c'est un cas particulier, on peut avoir besoin de faire ça:
Mais surtout, oxitan n'est pas un expert en programmation et mon code veut simplement montrer la logique à avoir dans ce cas.
Bien évidemment, j'ai été obligé de reinitialiser l'array dans le if pour pouvoir le remplir ensuite.
Pour info, la solution de cbrandt ne marche pas dans mon cas... if([saveMailsArray count]>0) ;-)
Je veux en effet tester que le tableau n'est pas initialisé.
Donc pour récapituler :
Soit :
if(saveMailsArray==nil)
Soit :
if(!saveMailsArray)
Merci à vous tous.
PS1 : je suis loin d'avoir 10 mois de Cocoa... Je n'ai jamais été une tronche en maths ou autre, ou en logique. Si je dois y passer plus de temps qu'un autre qui a plus de facilités pour obtenir la même chose, je le ferai. C'est tout.
PS2 : je préfère poster des questions bêtes et l'être moins après. En plus ça anime un peu le site.
PS3 : je n'efface jamais les messages, ce qui est dit est dit. (exception des messages sur le piratage ou autre bien sûr...)
Si ça doit marcher aussi:
C'est juste moins simple à piger, je trouve...