incompatible pointeur de conversion d'entier en assignant à la 'NSInteger' (aka 'int')
À l'aide d'un UISegmentedControl, j'obtiens l'erreur est suggéré dans le Titre de la dernière ligne de ce code.
- (IBAction)segmentAction:(id)sender
{
//NSLog(@"segmentAction: selected segment = %d", [sender selectedSegmentIndex]);
NSArray *speeds = @[@1.25, @1.5, @2.0];
speed = [speeds objectAtIndex:[sender selectedSegmentIndex]];
}
La déclaration de speed
est NSInteger speed;
.
Peut vous aider avec le soulève la question, s'il vous plaît?
[speeds objectAtIndex:[sender selectedSegmentIndex]]
est NSNumber*
.OriginalL'auteur zerowords | 2013-06-22
Vous devez vous connecter pour publier un commentaire.
Vous êtes l'affectation d'un
NSNumber *
à unNSInteger
.Gardez à l'esprit que
NSArray
s stocker des objets et que@1.25
est un raccourci pour[NSNumber numberWithFloat:1.25]
Changer de
ou avec une belle syntaxe
Aussi je pense que ce que vous voulez est
speed
être unfloat
, au lieu d'unNSInteger
. Vous ne pouvez pas affecter de 1,25, par exemple, à unNSInteger
.OriginalL'auteur Gabriele Petronella
Le problème ici est que
objectAtIndex:
retourne unid
, qui ne peut pas être attribué à unint
, parce que@32
serait de retour d'unNSNumber
, qui est un objectif-c de type. Utilisez cetteou
floatValue
, en fonction de ce que vous avez besoin.OriginalL'auteur Chris Loonam