更新Xcode后,我在代码中出现以下错误:

编译器无法合理地对此表达式进行类型判断 时间;请try 将表达式分解为不同的子表达式

代码:

//check popup in window frame

let spaceFromLeftSide = cutOutViewX.constant + cutOutViewWidth.constant/2 - (options.textWidth + padding*2)/2

if spaceFromLeftSide < 0{

    if options.side == .bottom {
        messageRightSpaceFromBottomDot.constant -= spaceFromLeftSide - padding
    }
    else if options.side == .top{
        messageRightSpaceFromTopDot.constant += spaceFromLeftSide - padding
    }
}

let spaceFromRightSide = cutOutViewX.constant + cutOutViewWidth.constant/2 + (options.textWidth + padding*2)/2

if spaceFromRightSide > targetView.frame.size.width{

    if options.side == .bottom {
        messageRightSpaceFromBottomDot.constant -= spaceFromRightSide - ( targetView.frame.size.width )
    }
    else if options.side == .top{
        messageRightSpaceFromTopDot.constant += spaceFromRightSide - ( targetView.frame.size.width )
    }
}

行中有错误:

let spaceFromRightSide = cutOutViewX.constant + cutOutViewWidth.constant/2 + (options.textWidth + padding*2)/2

怎么解决这个问题呢?

推荐答案

编译器无法在合理的时间内对此表达式进行类型判断;请try 将表达式拆分为不同的子表达式

当快速编译器发现表达式计算过长时,会出现此错误.有关更多详细信息,请访问check here

要解决这个问题,您只需将表达式拆分成更小的部分.就像:

let cutOutxOrigin = 3 * cutOutViewX.constant / 2
let actualPadding = (options.textWidth + padding * 2) / 2

let spaceFromRightSide = cutOutxOrigin + actualPadding

Ios相关问答推荐

不使用iOS 17修改器修改SWIFT用户界面视图

SWIFT根据地球坐标修改 node 旋转

clang:错误:SDK 路径中不包含libarclite

不可发送类型 '[String : Any]?'在调用非隔离实例方法 XXX 时退出主参与者隔离上下文不能跨越参与者边界

长按 SwiftUI 更改项目的顺序

UIView 阴影不适用于自定义扩展

在所有 tableview / collectionview 中禁用滚动指示器

如何在 Swift 中从另一个视图控制器将元素附加到数组中

为什么我的应用在 Testflight 中没有下载 dSYM 按钮?

setNeedsLayout 和 setNeedsDisplay

在 Swift 中按下返回键时在文本字段之间切换

Watchkit AppIcon - 名为AppIcon的应用图标集没有任何适用的内容

如何在导航栏右侧添加多个 UIBarButtonItem?

通过 iOS 创建和导出动画 gif?

Swift中类的初始化类方法?

如何缩小 UIImage 并使其同时变得清晰/锐利而不是模糊?

UITextView 从文本的底部或中间开始

iOS7 UITextView contentsize.height 替代

UICollectionView:必须用非零布局参数初始化

UITableView 中的圆形 UIImageView 没有性能影响?