2010-04-20 7 views
1

j'ai un tableau que je suis en train de vérifier si oui ou non un indexPath (.row) existe danscontainsObject - pourquoi ce travail ne fonctionne-t-il pas?

J'utilise ce code.

if ([array containsObject:[NSNumber numberWithInt:indexPath.row]]){ 
    NSLog(@"Yep, it exists in there."); 
} 

le tableau se compose des numéros 3, 8 et 2. Le chemin d'index charge les nombres de 0 à 8 dans une boucle.

Quelqu'un peut-il voir pourquoi cela ne fonctionne pas?

+1

S'il vous plaît 'CFShow (tableau);' et de signaler la sortie. – kennytm

+0

{type = immuable, count = 3, les valeurs = ( \t 0: {contenu = "3"} \t 1: { contents = "8"} \t 2: {contents = "2"} – Emil

+3

Oups - vous avez des chaînes ici, pas des chiffres ... – Jim

Répondre

7

Étant donné que le tableau contient des chaînes, vous devez comparer les chaînes. Pour créer une chaîne numérique, utilisez -stringWithFormat:. Donc:

if ([array containsObject:[NSString stringWithFormat:@"%d", indexPath.row]]){ 
    NSLog(@"Yep, it exists in there."); 
} 

Une meilleure solution est de stocker NSNumber dans le tableau.

+0

Ouais, je l'utilise maintenant. Le tableau est chargé à partir d'une plist, donc ce n'est pas possible (je pense). – Emil

+0

@Emil: C'est possible. Choisissez "Numéro" dans Types dans l'éditeur de liste de propriétés. Enregistrer en format binaire ou XML. – kennytm

+0

oh, je ne le savais pas. Merci! :) – Emil

Questions connexes