下面的代码在 if
行给出编译器错误:“无法使用类型为 '(CGError, _CGError)' 的参数列表调用 '!='”
var fadeToken: CGDisplayFadeReservationToken = 0
let fadeReservationError = CGAcquireDisplayFadeReservation(0.5, &fadeToken)
if fadeReservationError != kCGErrorSuccess {
println("Failed to fade screen")
}
我尝试将 kCGErrorSuccess 转换为 CGError
,并将两个操作数转换为 Int
,但都给出了其他错误。似乎 Int32
类型(其中 CGError
是 typealias
)无法进行比较:对吗?
我正在使用 Xcode 6.1 的公开版本
最佳答案
我通过查看 kCGErrorSuccess
的 Swift 定义发现了这一点:
struct _CGError {
init(_ value: UInt32)
var value: UInt32
}
var kCGErrorSuccess: _CGError { get }
...
typealias CGError = Int32
就是这样:CGError
被定义为 Int32
,而其潜在值被定义为 UInt32
。像这样获取常量的 .value
并将两个操作数转换为 Int
,清除了编译器错误:
if Int(fadeReservationError) != Int(kCGErrorSuccess.value) {
关于swift - 如何在 Swift 中比较 CGError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26554908/