【问题标题】:type-check error after upgrading to Xcode 10升级到 Xcode 10 后的类型检查错误
【发布时间】:2019-05-23 08:01:18
【问题描述】:

升级到 Xcode 10 并构建我的代码之后

let nearestWedge: Int = Int(round(((currentRadians + (radiansPerWedge / 2)) + snappingPositionRadians) / radiansPerWedge))

我收到了这个错误:

编译器无法在合理的时间内对该表达式进行类型检查;尝试将表达式分解为不同的子表达式

【问题讨论】:

  • 错误是什么?添加更多代码。

标签: swift xcode xcode10


【解决方案1】:

当 swift 编译器发现表达式太重而无法在合理的时间内计算出来时会出现此错误

只需在子表达式中破坏您的表达式;一个例子可能是:

let firstHalfOfExpression = (currentRadians + (radiansPerWedge / 2)) + snappingPositionRadians
let nearestWedge: Int = Int(round(firstHalf / radiansPerWedge))

【讨论】:

  • 在我更新我的 Xcode 版本之前,我的代码可以正常运行。
  • 为什么要这样做?它只是使代码更具可读性。您无法绕过编译器错误。无论如何,现在可以编译了吗?
  • 为什么不能??
  • 只是简单地再次打破你的表达,它也更具可读性和可维护性:let ballPositionX = ball.position.x let ballWidth = ball.size.width / 2 let goldZone2Position = goldZone2.position.x + goldZone2.size.width / 2 let goldZone1Position = goldZone1.position.x - goldZone1.size.width / 2 if(ballPositionX - ballWidth >= goldZonePosition && ballPositionX + ballWidth <= goldZone1Position) { }
  • @Devlax 请将此标记为正确答案。因为解决了问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-06
相关资源
最近更新 更多