gpt4 book ai didi

IOS Swift 二元运算符 '<=' 不能应用于类型为 'CGFloat?' 和 'Int' 的操作数,但 '==' 有效

转载 作者:搜寻专家 更新时间:2023-11-01 05:48:24 25 4
gpt4 key购买 nike

我理解 CGFloat 和 Int 之间的区别,但奇怪的是我能够在 if 循环中使用

if image?.size.width == 200 {
// CODE
}

其中 image 是展开的 UIImage,size.width 是 CGFloat,而数字 200 是 Int 类型,这可以在 Xcode 上运行而没有编译器错误。

然而:

if image?.size.width <= 200 {
// CODE
}

Xcode 返回错误:

Binary operator '<=' cannot be applied to operands of type 'CGFloat?' and 'Int'

而且Xcode无法运行。我查看了有关 CGFloat 的 Apple 文档及其“==”和“<=”运算符规范,他们确保双方都必须是 CGFloats,并且我没有任何扩展处理 CGFloats 和 Int 之间的 == 运算符(除非它在椰足动物?)

我的问题是为什么一个有效而另一个是错误的?

最佳答案

你误解了为什么第一种情况有效:200 是一个数字文字,编译器看到你正在检查这个文字是否与 Optional<CGFloat> 相等。所以它将 200 解释为 CGFloat .自Optional<CGFloat>是 nil 或实际数字,您可以测试它是否等于 200。

第二种情况是关于两个值的排序。编译器没有关于排名的规则 nil反对实际值(value)。您必须自己做出决定。

在你的情况下,我认为这就是你真正想要的:

if let width = image?.size.width, width <= 200 {
// CODE
}

关于IOS Swift 二元运算符 '<=' 不能应用于类型为 'CGFloat?' 和 'Int' 的操作数,但 '==' 有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49483159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com