【发布时间】:2018-05-03 16:42:28
【问题描述】:
我正在尝试将一些旧的 WWDC swift 代码转换为 Swift 4。我认为我已经完成了所有工作,除了最后一点会做一些 KVO。这很难缩小到最后一点,因为一切似乎都像示例代码一样运行 - 但这些 KVO 方法在 Swift 4 中没有被调用。我在这里发现了这一点:Open Radar Bug
用 Swift 4 表示以下内容的方式是什么?
// 使用 KVO 机制来指示对“状态”的更改也会影响其他属性
class func keyPathsForValuesAffectingIsReady() -> Set<NSObject> {
return ["state" as NSObject]
}
class func keyPathsForValuesAffectingIsExecuting() -> Set<NSObject> {
return ["state" as NSObject]
}
class func keyPathsForValuesAffectingIsFinished() -> Set<NSObject> {
return ["state" as NSObject]
}
以下是示例中的变量定义:
override var isReady: Bool {
switch state {
case .initialized:
// If the operation has been cancelled, "isReady" should return true
return isCancelled
case .pending:
// If the operation has been cancelled, "isReady" should return true
guard !isCancelled else {
return true
}
// If super isReady, conditions can be evaluated
if super.isReady {
evaluateConditions()
}
// Until conditions have been evaluated, "isReady" returns false
return false
case .ready:
return super.isReady || isCancelled
default:
return false
}
}
override var isExecuting: Bool {
return state == .executing
}
override var isFinished: Bool {
return state == .finished
}
如果需要更多代码,请告诉我。
如果这是重复的问题,请在此处链接到重复的问题。我一直找不到解决方案。
【问题讨论】:
标签: swift swift4 key-value-observing