Récupérer la valeur (NSInteger) d'un objet dans un NSArray ?
apocaalypso
Membre
Bonsoir,
J'ai deux NSArray, l'une contenant 45 UIImageView et l'autre contenant tout autant de NSInteger. Ce que je souhaite c'est de récupérer l'entier de ce deuxième NSArray au même index qu'une UIImageView préalablement choisie.
Pour l'instant j'ai :
Mais j'ai le warning : initialization makes integer from pointer without a cast.
J'ai chercher sur internet d'où pouvait provenir mon erreur en vain.
Merci d'avance !
Guillaume.
J'ai deux NSArray, l'une contenant 45 UIImageView et l'autre contenant tout autant de NSInteger. Ce que je souhaite c'est de récupérer l'entier de ce deuxième NSArray au même index qu'une UIImageView préalablement choisie.
Pour l'instant j'ai :
-(NSInteger)displayFleetsOfPlanet:(UIImageView *)planet<br />{<br /> NSInteger indexOfPlanet = [cases indexOfObject:planet];<br /> NSInteger indexOfFleet = [fleetsByPlanets objectAtIndex:indexOfPlanet];<br /><br /> return indexOfFleet;<br />}
Mais j'ai le warning : initialization makes integer from pointer without a cast.
J'ai chercher sur internet d'où pouvait provenir mon erreur en vain.
Merci d'avance !
Guillaume.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Des NSNumber éventuellement...
J'ai changé ma fonction mais sans supprimer l'erreur :
Je ne l'appelle peut-être pas de la bonne façon :
Merci de ton aide schlum.
NSNumber a déjà une méthode adéquate pour ça : "stringValue".
Et puis, j'ai parlé de NSNumber parce qu'en général c'est ce qu'on utilise pour mettre des nombres dans un tableau, mais rien ne garantit que c'est ce que tu as dans ton tableau...
C'est là ton erreur, tu essayes de mettre des entiers dans ton NSArray qui ne sait contenir que des objets (id, NSObjet et toutes les classes Cocoa dérivant de NSObject... mais pas les types primitifs comme float ou int)
D'où l'intérêt de passer par NSNumber pour encapsuler tes int dans des objets Cocoa.
Et tout à l'air de marcher, merci beaucoup à tous les deux !
Du coup arrayWithObjects:0,0,0,nil est équivalent à arrayWithObjects:nil,nil,nil,nil enfin du moins il est interprété comme ça (avec, y'a des chances, un warning disant que tu as fourni un entier là où il attendait un pointeur, et ce "without a cast")
Pire que ça... Il s'arrête au premier "nil", donc ça fournira un NSArray totalement vide, et ce sans aucun warning !
Cela dit, dans les conditions normales de pression et de température de warnings, 0 est castable en (void*) sans cast explicite et sans warnings si je ne m'abuse, donc pas de warnings... (on peut créer un array vide avec cette méthode ; même si c'est pas malin, c'est pas interdit ).
NULL pour des pointeurs C (void*)
Nil je ne l'utilise jamais mais conceptuellement ça serait pour des Class nulles ([tt]Class c = Nil; if (...) c = [toto class];[/tt])
C'est comme ça que j'écris par exemple : [tt][UIView beginAnimations:nil context:NULL][/tt] car le premier param est un NSString donc j'utilise "nil" si je veux rien mettre, et le 2e est un void* donc j'utilise NULL.
En réalité il n'y a aucune différence, mais ça me paraà®t tellement naturel, vu que pour moi "nil" représente un objet cocoa nul que je me suis jamais trop posé la question...
J'ai la même pratique, si ce n'est que je n'ai jamais eu l'occasion d'utiliser Nil.
Je voudrais ajouter un petit UILabel au centre de chacune de mes UIImageView, j'ai donc naturellement fais :
Mais ce code ne me crées qu'un seul UILabel.
C'est parce que j'initialise toujours le même UILabel c'est ça ?
En effet subview.bounds c'est un rect (0.,0.,width,height)
mets subview.frame dont l'origine est pris dans le système de coordonnées de la subview.
NSLog(@%@",[cases subviews]);
après être sorti de la boucle for, afin d'observer le nombre de UILabel créés.