67 votes

Obtenir l'Index d'un Objet à partir de NSArray?

je suis en train d'essayer d'obtenir l'index d'un tableau par le biais de indexOfObject méthode comme suit, mais lorsque j'essaie d'accéder à la valeur de l'indice-je obtenir une valeur d'ordures.. pour des fins de test, je vais avoir un tableau avec les valeurs de {57,56,58..} pour obtenir un indice de disons 56,

NSNumber *num = [NSNumber numberWithInteger:56];
NSInteger Aindex = [myArray indexOfObject:num];
NSLog(@" %d",Aindex);

la valeur de ce que j'obtiens est quelque chose comme 2323421. que suis-je bien fais de mal??

40voto

joe Points 291

Les gens,

Lorsqu'un objet n'est pas trouvé dans le tableau de la indexOfObject la méthode ne retourne PAS une poubelle de valeur. De nombreux systèmes de retour d'un indice de -1 si l'élément n'est pas trouvé.

Cependant, sur IOS - parce que le indexOfObject retourne un UNSIGNED int (aka NSUInteger) le retour de l'index doit être supérieure ou égale à zéro. Depuis le "zéro" est un index valide il n'y a aucun moyen d'indiquer à l'appelant que l'objet n'a pas été trouvé, sauf par le retour d'un accord sur la valeur de la constante que nous pouvons tous test. Cette constante valeur convenue est appelé NSNotFound.

La méthode:

- (NSUInteger)indexOfObject:(id)anObject;

sera de retour NSNotFound si l'objet n'était pas dans le tableau. NSNotFound est un très grand entier POSITIF (généralement de 1 moins le maximum d'int sur la plate-forme).

6voto

iCoder4777 Points 921
NSNumber *num1 = [NSNumber numberWithInt:56];
    NSNumber *num2 = [NSNumber numberWithInt:57];
    NSNumber *num3 = [NSNumber numberWithInt:58];
    NSMutableArray *myArray = [NSMutableArray arrayWithObjects:num1,num2,num3,nil];
    NSNumber *num=[NSNumber numberWithInteger:58];

    NSInteger Aindex=[myArray indexOfObject:num];

    NSLog(@" %d",Aindex);

Sa présentation correcte de la sortie, peut être u ont fait quelque chose de mal avec le stockage d'objets dans le tableau.

0voto

7KV7 Points 19750

Je viens de vérifier. Sa fonctionne très bien pour moi. Vérifiez si votre tableau contient le nombre particulier. Il sera de retour de ces déchets valeurs si l'élément n'est pas présent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X