Преобразование Swift Float в UInt8 не нужно?

Вопрос:

Я получаю много ошибок относительно конверсий в быстром бета-версии 4. Я видел, что это была довольно распространенная проблема, и я смог исправить большинство ошибок, кроме этого определенного:

let xDistance = testCircle.position.x - circle.position.x
let yDistance = testCircle.position.y - circle.position.y

let distance = (sqrt(pow(Float(xDistance), 2) + pow(Float(yDistance), 2)))
let minDist = testCircle.size.width * 1.5 + circle.size.width/2

if (distance >= minDist) {
return true
}

if (distance >= minDist) возвращает следующую ошибку:

'Float' is not convertible to 'UInt8'

Я не уверен, почему мне нужно использовать UInt8 здесь, но я попытался его исправить и только что вызвал большую ошибку преобразования. Кто-нибудь видит проблему здесь?

Лучший ответ:

Сообщение об ошибке не имеет никакого смысла, поскольку проблема в том, что вы сравниваете Float и CGFloat. В предыдущих Swift-бетах CGFloat (по крайней мере иногда) был псевдоним Float, поэтому вы могли уйти с этим, но в бета-версии 4 это его собственный тип. Вы можете просто CGFloat свое значение float для CGFloat в сравнении:

if (CGFloat(distance) >= minDist) {
    return true
}

Безопаснее идти FloatCGFloat так как на некоторых архитектурах CGFloat является Double под капотом.

Оцените статью
TechArks.Ru
Добавить комментарий