swift - 如何在 Swift 中比较 CGError

标签 swift comparison core-graphics quartz-graphics core-foundation

下面的代码在 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 类型(其中 CGErrortypealias)无法进行比较:对吗?

我正在使用 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/

相关文章:

c - 数字比较中的歧义(在 C 中)?

C# 可能的意外引用比较

c++ - 用 C++ 设计一个可以多种方式比较的对象

ios - 书法绘图 IOS Coregraphics

ios - 使用曲线 Core Graphics 的路径动画

ios - Swift 3 - 如何在标签栏上创建一个突出的按钮(例如相机按钮)

ios - 自动增加/减少 UITableViewCell 中的 UILabelView 高度?

arrays - 我可以使用数组中的字符串作为 Swift 中的选择器吗?

ios - CoreGraphics - 绘制弧线描边

ios - 无法将 View Controller 连接到 Swift 文件