Obtenir la taille d'un tableau
j'ai un code qui nécessite l'utilisation d'une boucle for pour lire les variables d'un tableau.
int size=sizeof names;
NSLog(@"thelast one is %d",size);
NSString *usersName=userName.text;
NSString *usersPass=passWord.text;
for (i=0; i<=size;i++){
NSString *namesArray=[names objectAtIndex:i];
NSString *passArray=[pass objectAtIndex:i];
NSLog(@"namesArray %@",namesArray);
NSLog(@"passArray %@",passArray);
if([namesArray isEqualToString:usersName]){
userValid=1;
NSLog(@"The content of arry4 is %@",namesArray);
}
if([passArray isEqualToString:usersPass]){
passValid=1;
NSLog(@"The content of arry4 is %@",passArray);
}
else {
userValid=0;
passValid=0;
}
}
J'ai eu quelques problèmes parce que chaque fois que cette fonction est appelée depuis le programme, c'est presque comme si la "sizeof noms' est faux, donc pas toutes les valeurs dans le tableau sont vérifiées.
Je suis un programmeur Java, donc je suis habitué à des noms.longueur, et on m'a dit sizeof noms est essentiellement la même chose... n'importe quelle aide?
Acclamations.
source d'informationauteur gunmania0 | 2011-06-16
Vous devez vous connecter pour publier un commentaire.
Ne pas utiliser sizeof. Utilisation
[names count]
.Vous souhaitez utiliser [les noms de comte, pas sizeof noms. Sizeof va vous donner la taille des noms réels pointeur d'objet lui-même et non pas le nombre d'éléments, c'est dynamique, type de mémoire.
Pour obtenir le nombre d'éléments stockés dans une
NSAarray
vous devez utiliser la méthode d'instancecount
qui retourne unNSUInteger
.Aussi, vous pouvez parcourir ces éléments à l'aide de la
for in
boucle, qui est également disponible en Java, si je me souviens bien.Noter que
sizeof
est un C de l'opérateur qui renvoie la taille en octets de son opérande, afin de ne pas vous dire combien d'éléments sont stockés dans ceNSArray
mais la taille en octets d'un NSArray instance.Je sais que votre question a déjà été répondu - mais ici, c'est un plus Cacao façon de l'écrire
On peut également utiliser une Rapide Énumération, dans certains cas, il peut être plus clair pour un lecteur: