我得到以下代码:
let floatValue: Float = 1
let intValue: Int = 1
if floatValue == intValue {
println("Types and value are equal")
} else {
println("Type is not equal.")
}
我知道它会打印“类型不相等”。
但我遇到了一个错误if floatValue == intValue
错误是:
Float 不可转换为“MirrorDisposition”
我以前从未见过这个错误,也找不到任何相关信息。
该代码在 xCode 6 beta 1、2 和 3 中运行良好。
我现在正在运行 xCode 6 beta 4。
有谁知道这个错误是什么意思?以及我最终能做些什么。
MirrorDisposition
是您可以从 a 获得的类型之一Mirror
一个值(使用reflect
功能)。它们是为 IDE 设计的,可以显示值。
/// How children of this value should be presented in the IDE.
enum MirrorDisposition {
case Struct
case Class
case Enum
case Tuple
case Aggregate
case IndexContainer
case KeyContainer
case MembershipContainer
case Container
case Optional
case ObjCObject
}
该错误消息意味着编译器没有找到==
运算符来比较Float
与Int
。然而,它可能发现了一个==
运算符为MirrorDisposition
and Int
,所以它正在尝试转换Float
to MirrorDisposition
但它显然不能,所以你会收到一条错误消息。
(顺便说一句,您得到的类型错误是随机的,具体取决于编译器尝试使用的运算符。我得到Float is not convertible to Selector
).
错误消息是一个错误,应该有一条消息说Could not find == operator for Float and Int
.
检查值相等的明显修复方法是使用强制转换:
if intValue == Int(floatValue) {
没有理由以这种方式比较类型,因为在 Swift 中,类型是由编译器检查的。永远不应该有理由显式检查类型(当然是指值类型,而不是对象类型)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)