5 votes

ios NSUinteger pour le type "id".

Mon cerveau me fait défaut aujourd'hui. Je sais que ça doit être simple, mais je ne le vois pas.

CGFloat *minutes = [self.displayData objectForKey:index];

Conversion incompatible d'entier en pointeur envoyant 'NSUInteger' (alias 'unsigned int') au paramètre de type 'id'.

index est un NSUInteger dans une boucle, (0 1 2 3 etc)

Comment passer ce cap ? Merci.

8voto

Le dictionnaire attend un objet comme clé ( id ) plutôt qu'un simple nombre entier ( NSUInteger ).

Essayez d'envelopper le nombre entier dans un NSNumber objet.

CGFloat *minutes = [self.displayData objectForKey:[NSNumber numberWithUnsignedInteger:index]];

2voto

Caleb Points 72897

La méthode -objectForKey : renvoie une valeur de type id mais vous essayez de l'assigner à un CGFloat*, ce qui n'est pas compatible avec id parce que CGFloat n'est pas une classe. Si vous savez que l'objet que vous récupérez du dictionnaire est d'un certain type, par exemple un NSNumber, vous pouvez prendre des mesures pour le convertir en CGFloat lorsque vous l'obtenez.

Aussi Vous essayez d'utiliser un int comme clé dans un dictionnaire, mais les dictionnaires exigent que leurs clés soient également des objets. Si vous voulez accéder à vos objets par index, stockez-les dans un tableau plutôt que dans un dictionnaire.

En mettant tout ça ensemble, on obtient quelque chose comme ça :

// after changing the displayData to an array
NSNumber *number = [self.displayData objectAtIndex:index];
CGFloat minutes = [number floatValue];

0voto

Jeshua Lacock Points 2963

Vous ne devriez pas utiliser un pointeur comme celui-ci :

CGFloat minutes = [self.displayData objectForKey:index];

-3voto

Adri Points 243

Question facile. N'utilisez pas NSUIntegrer. À la place, faites ce qui suit :

id index;//then set the index

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