Domanda

Essendo una partenza sviluppatore Objective-C, e non avendo la pazienza di fare un po 'in realtà lo studio, piuttosto che tuffarsi in cose, mi sono imbattuto in quanto segue:

Ho un CGFloat, e voglio dividerlo per qualcosa, e utilizzare il risultato come un NSInteger.

Esempio:

CGPoint p = scrollView.contentOffset; //where p is a CGFloat by nature
NSInteger * myIndex = p.x/468.0;

Durante la compilazione, ottengo l'errore: "tipi incompatibili in inizializzazione". Direi che è a causa della mancata corrispondenza tra la CGFloat e NSInteger.

Che cosa devo sapere per uscire da questo? Ci scusiamo per ti dà fastidio.

È stato utile?

Soluzione

Due problemi. Stai usando un puntatore NSInteger (NSInteger * MyIndex). E avrete bisogno di un cast per andare da float a int. In questo modo:

NSInteger myIndex = (int)(p.x / 468.0);

Altri suggerimenti

NSInteger non è un tipo di oggetto effettivo. È un typedef per un tipo intero primitivo. Rimuovere il * e il tuo esempio dovrebbe funzionare. Come è ora, si sta cercando di assegnare il risultato della vostra matematica come un puntatore e che stai ricevendo quel messaggio di errore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top