La conversion entre les types en Objective-C
Être un Objectif de départ-développeur C, et de ne pas avoir la patience de le faire étudier, plutôt que de simplement plongée dans les choses, j'ai couru dans la suite:
J'ai un CGFloat, et je tiens à le diviser par quelque chose, et utiliser le résultat comme un NSInteger.
Exemple:
CGPoint p = scrollView.contentOffset; //where p is a CGFloat by nature
NSInteger * myIndex = p.x/468.0;
Lors de la compilation, j'obtiens l'erreur: "Incompatible types d'initialisation".
Je suppose que c'est à cause de l'inadéquation entre le CGFloat et la NSInteger.
Que dois-je savoir pour sortir de cette situation? Désolé de vous déranger.
OriginalL'auteur | 2009-06-07
Vous devez vous connecter pour publier un commentaire.
Deux problèmes. Vous êtes à l'aide d'un NSInteger pointeur (NSInteger *myIndex). Et vous aurez besoin d'un plâtre pour aller de float en int. Comme:
Je n'ai pas fait beaucoup d'Objective-C, mais dans mon expérience limitée vous n'avez pas à utiliser beaucoup de style C les pointeurs (à l'aide de l' * avec un type primitif, comme int). Objectif C les objets sont manipulés très bien.
OriginalL'auteur David
NSInteger est pas un type d'objet. C'est un typedef pour une primitive de type entier. Supprimer le * et par votre exemple, devrait fonctionner. Comme il est maintenant, vous essayez d'affecter le résultat de votre mathématiques comme un pointeur et vous obtenez ce message d'erreur.
OriginalL'auteur Jason Fritcher