float不能转换为'MirrorDisposition'Swift什么是mirrordisposition?

Bas*_*Bas 5 swift

我得到以下代码:

let floatValue: Float = 1
let intValue: Int = 1

if floatValue == intValue   {
    println("Types and value are equal")
} else {
    println("Type is not equal.")
}
Run Code Online (Sandbox Code Playgroud)

我知道它会打印出"Type is not equal".

但我得到一个错误if floatValue == intValue 错误是:

Float不能转换为'MirrorDisposition'

我之前从未见过这个错误,也找不到任何关于它的信息.这段代码在xCode 6 beta 1,2和3中运行良好.我现在正在运行xCode 6 beta 4.

有谁知道这个错误意味着什么?我最终可以做些什么呢.

Sul*_*han 16

MirrorDisposition是一个可以从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
}
Run Code Online (Sandbox Code Playgroud)

错误消息表示编译器没有找到==运算符来比较a FloatInt.但是,它可能会发现一个==运营商MirrorDispositionInt,因此它试图转换FloatMirrorDisposition,但它显然不能,所以你会得到一个错误消息.

(顺便说一句,你得到的类型错误是随机的,这取决于编译器尝试使用的运算符.我得到了Float is not convertible to Selector).

错误消息是一个错误,应该有一条消息说Could not find == operator for Float and Int.

检查值相等的明显修复是使用强制转换:

if intValue == Int(floatValue)  {
Run Code Online (Sandbox Code Playgroud)

没有理由以这种方式比较类型,因为在Swift中,编译器会检查类型.永远不应该有理由明确地检查类型(当然,谈论值类型,而不是对象类型).