"CGFloat" kann mit Swift und Xcode 6 Beta 4 nicht auf "UInt8" und andere CGFloat-Probleme konvertiert werden
Falls dies das Problem beleuchtet, ist hier der ursprüngliche Objective-C-Code.
int x = (arc4random()%(int)(self.gameView.bounds.size.width*5)) - (int)self.gameView.bounds.size.width*2;
int y = self.gameView.bounds.size.height;
drop.center = CGPointMake(x, -y);
Ich habe mit diesem Code angefangen. Die Zeilen 2 und 3 sind in Ordnung, ich stelle sie der Übersichtlichkeit halber später vor.
let x = CGFloat(arc4random_uniform(UInt32(self.gameView.bounds.size.width * 5))) - self.gameView.bounds.size.width * 2
let y = self.gameView.bounds.size.height
dropView.center = CGPointMake(x, -y)
In Xcode 6 Beta 3 musste das Ergebnis arc4random_uniform UInt32 in CGFloat umgewandelt werden, damit Minus und Multiplikation funktionieren. Dies funktioniert nicht mehr und der Compiler zeigt einen Fehler an:
CGFloat kann nicht in UInt8 konvertiert werden.
In den Versionshinweisen heißt es:
CGFloat ist jetzt ein eindeutiger Gleitkommatyp, der entweder ein Float auf 32-Bit-Architekturen oder ein Double auf 64-Bit-Architekturen umschließt. Es bietet die gleichen Vergleichs- und Rechenoperationen von Float und Double und kann unter Verwendung numerischer Literale erstellt werden Die Verwendung von CGFloat isoliert Ihren Code vor Situationen, in denen Ihr Code für 32-Bit in Ordnung wäre, schlägt jedoch beim Erstellen für 64-Bit oder umgekehrt fehl. (17224725) "
Mache ich nur etwas falsch mit Typen? Ich weiß nicht einmal, wie ich dieses Problem besser beschreiben kann, um Apple einen Fehlerbericht für die Beta 4 zu übermitteln. So ziemlich jedes einzelne Swift-Projekt, das ich habe, hat irgendeine Art von Punkt- oder Korrekturmanipulation, die von diesem Problem betroffen ist, also bin ich auf der Suche nach etwas Verstand.