我得到以下代码:
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 Float和Int.但是,它可能会发现一个==运营商MirrorDisposition和Int,因此它试图转换Float到MirrorDisposition,但它显然不能,所以你会得到一个错误消息.
(顺便说一句,你得到的类型错误是随机的,这取决于编译器尝试使用的运算符.我得到了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中,编译器会检查类型.永远不应该有理由明确地检查类型(当然,谈论值类型,而不是对象类型).
| 归档时间: |
|
| 查看次数: |
3703 次 |
| 最近记录: |