swift - 二元运算符 > 错误

标签 swift swift3 double cgfloat operands

我正在开发一款游戏,在模拟器中一切都完美无缺。但是当我尝试归档该项目时,出现错误:

  if !shouldDetectScoreCollision && ballClearHeight.native > basketballHoopHeight {

错误:二元运算符 > 不能应用于 cgfloat.native(又名 float )和 double(在 ballClearHeight.native 和 basketballHoopHeight 上)类型的操作数

我还有几个常量:

let halfBall = basketball.size.height/2.0
let ballClearHeight = basketball.position.y - halfBall
let basketballHoopHeight = 200.0
for i in 1 ..< throwPoints.count {
        // CGFloat.native is a Double
        dx += throwPoints[i].x - throwPoints[i-1].x
        dy += throwPoints[i].y - throwPoints[i-1].y
    }

我尝试转换 basketballHoopHeight = Float(200.0),这给了我错误:二元运算符 > 不能应用于 cgfloat.native(又名 double )和 float(在 ballClearHeight.native 和 basketballHoopHeight 上)类型的操作数

并且还尝试转换 basketballHoopHeight = CGFloat(200.0),这给了我错误:二元运算符 > 不能应用于 cgfloat.native(又名 float)和 cgfloat(在 ballClearHeight.native 和 basketballHoopHeight 上)类型的操作数

但是,当我转换 let basketballHoopHeight = Float(200.0) 时,游戏在模拟器上运行,但在尝试存档时出现错误。

有什么建议吗?

最佳答案

ballClearHeight.nativeCGFloat 中的值 “ native ”类型,在 64 位平台上是 Double 并且 32 位平台上的 Float。因此既不

ballClearHeight.native > basketballHoopHeight // rhs is a Double
ballClearHeight.native > Float(basketballHoopHeight) // rhs is a Float

将为所有 平台编译(就像为归档所做的那样)。

所以忘记 .native 属性,只比较 CGFloat 值:

let basketballHoopHeight: CGFloat = 200.0

if !shouldDetectScoreCollision && ballClearHeight > basketballHoopHeight { ... }

关于swift - 二元运算符 > 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44167763/

相关文章:

ios - 将 UITabBarDelegate 设置为 UIViewController 时应用程序崩溃

swift - 无法打开要在 YouTube tvOS 应用程序上播放的 YouTube URL

iphone - UIRefreshControl beginRefreshing() 显示事件指示器,但它没有动画

ios - swift 4 : UITableView dataSource isn't working

ios - 如何从 Parse 中删除对象?

c - C中的 float 和双舍入

c# - 用 C# 划分数学

java - 从包含大于 Double.MaxValue 的值的字符串中解析 double

ios - 从 UIPickerView 接收输入时如何更新 UITextField?

swift - 类型推断在 Swift 3 中无法正常工作