В случае, если это освещает проблему, здесь исходный код Objective-C.
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);
Я начал с этого кода. Строки 2 и 3 в порядке, я представляю их для ясности позже.
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)
В Xcode 6 beta 3 необходимо было вывести результат arc4random_uniform UInt32 в CGFloat, чтобы работа минус и умножение. Это больше не работает, и компилятор показывает ошибку:
'CGFloat не конвертируется в' UInt8
В примечаниях к выпуску указано:
"CGFloat теперь представляет собой отдельный тип с плавающей точкой, который обертывает либо Float на 32-разрядных архитектурах, либо Double на 64-разрядных архитектурах. Он обеспечивает все те же операции сравнения и арифметики Float и Double и может быть создан используя числовые литералы. Использование CGFloat изолирует ваш код от ситуаций, когда ваш код будет ! отлично подходит для 32-битных, но не работает при создании для 64-битных или наоборот. (17224725) "
Я просто делаю что-то неправильно с типами? Я даже не знаю, как лучше описать эту проблему, чтобы представить отчет об ошибке в Apple для бета-версии 4. Почти каждый проект Swift, который у меня есть, делает любую проблему с точками или прямой манипуляцией, попал в эту проблему, поэтому я ища какое-то здравомыслие.