La conversión entre tipos en Objective-C
-
12-09-2019 - |
Pregunta
Ser un desarrollador a partir de Objective-C, y no tener la paciencia para hacer realidad algunos estudios, en lugar de sumergirse en las cosas, me encontré con lo siguiente:
Tengo un CGFloat, y quiero dividirlo por algo, y utilizar el resultado como un NSInteger.
Ejemplo:
CGPoint p = scrollView.contentOffset; //where p is a CGFloat by nature
NSInteger * myIndex = p.x/468.0;
Durante la compilación, me sale el error: "tipos incompatibles en la inicialización". Supongo que es debido a la falta de coincidencia entre la CGFloat y la NSInteger.
¿Qué debo saber para salir de esta? Lo siento por no molesten.
Solución
Dos problemas. Usted está utilizando un puntero NSInteger (NSInteger * MyIndex). Y se necesita un molde para ir de flotador para int. De esta manera:
NSInteger myIndex = (int)(p.x / 468.0);
Otros consejos
NSInteger no es un tipo de objeto real. Es un typedef para un tipo de número entero primitivo. Retire el * y su ejemplo debería funcionar. Como está ahora, que está intentando asignar el resultado de su matemática como un puntero y que está recibiendo el mensaje de error.