2010-07-02 5 views
0

Je ne peux pas trouver ce ETM serait le problème ici ...Type non valide Recepteur int

NSArray *oneMove; 
oneMove = [[bestMoves objectAtIndex:i] componentsSeparatedByString:@","]; 
int from, to; 
int temp = [[oneMove objectAtIndex:0] intValue]; 

from = [temp intValue]/100; //"Invalid receiver type int" 
to = [temp intValue]%100; //"Invalid receiver type int" 

NSLog(@"%d, %d", from, to); 

La chose est: il fonctionne et « de » et « pour » obtenir les bonnes valeurs, mais je reçois des avertissements aux lignes indiquées ...

quelqu'un sait pourquoi et comment résoudre ce problème? (Ne pas comme eux avertissements lors de la compilation;))

thx

Répondre

3
température

est déjà int valeur, pas NSNumber. Vous ne pouvez pas envoyer de message [temp intValue] à celui-ci.

Il suffit d'utiliser

from = temp/100; 
to = temp % 100; 

Edit: Voici le code qui prouve cela fonctionne:

NSArray *bestMoves = [NSArray arrayWithObject:@"499,340,124"]; // Example data 
NSArray *oneMove = [[bestMoves objectAtIndex:0] componentsSeparatedByString:@","]; 
int from, to; 
int temp = [[oneMove objectAtIndex:0] intValue]; 

from = temp/100; // Code change 
to = temp%100; // Code change 

NSLog(@"%d, %d", from, to); 

sortie est comme prévu 4, 99.

+0

a essayé cela, mais que doesn me donner le bon résultat. temp A avoir seulement 4 chiffres comme 3132 (ce qui est ce que je reçois si je le fais à ma façon), mais si je fais ce que vous avez suggéré je reçois 97759792 à la place ... – zwadl

+0

Je n'ai pas fait de changement à temp. Avez-vous vérifié que oneMove détient la valeur que vous attendez? Je suppose que ce devrait être un objet NSNumber. Ensuite, faites NSLog ("% d", temp); pour voir si cela fonctionne. Si ce n'est pas le cas, votre modèle de données est cassé. – Eiko

+0

le tableau oneMove contient 2 objets NSCFString ... (tout comme le bestMoves Array) pourrait-il vous aider dans votre analyse? – zwadl