2009-08-07 7 views
1

Donc, c'est probablement très simple, mais pour une raison que je ne peux pas comprendre. Quand je cours le code ci-dessous je ne peux pas l'obtenir pour entrer dans l'instruction if même si quand je vais dans la console de débogage dans xcode et que j'exécute po [resultObject valueForKey:@"type"] il renvoie 0. Qu'est-ce que je fais mal? Merci de votre aide!objectif-c si déclaration

NSManagedObject *resultObject = [qResult objectAtIndex:i]; 

if (([resultObject valueForKey:@"type"])== 0) { 
    //do something 
} 

Répondre

8

Le résultat de valueForKey: est toujours un objet - et le seul objet égal à 0 est nul. Dans le cas d'une valeur numérique, ce sera un NSNumber. En tout cas, je pense que vous voulez demander [[resultObject valueForKey:@"type"] intValue].

+0

Merci! Cela a fonctionné parfaitement! Je savais que c'était quelque chose de simple comme ça. – ABB

0

Vous pouvez essayer de jeter le NSManagedObject à un int (si c'est ce qu'il est en fait ...)

Aussi, vous n'avez pas besoin des parenthèses supplémentaires autour du []

NSManagedObject *resultObject = [qResult objectAtIndex:i]; 

if ((int)[resultObject valueForKey:@"type"] == 0) { 
    //do something 
} 
+0

Cela vérifie simplement si l'objet est nul et est essentiellement équivalent à l'exemple original. Si ne vérifie pas si la valeur de l'objet est 0. – Chuck