错误:override public func observeValueForKeyPath

Error with: override public func observeValueForKeyPath

我正在使用适用于 Xcode 7 Beta 2 的代码。刚刚获得 Beta 3,现在我遇到了这个看起来像 Xcode 错误的问题?

为了我的一个 public 类...

override public func observeValueForKeyPath...

Method does not override any method from its superclass

所以我取出 "override":

public func observeValueForKeyPath

Method conflicts with method from superclass NSObject with the same Objective-C selector

哈哈!我被第一个错误骗了。不会编译任何一种方式。有什么帮助吗?

将声明中的 [NSObject:AnyObject] 更改为 [String:AnyObject]

如果定义是从 NSKeyValueObserving.h 复制的,您的覆盖将如下所示:

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
    // ...
}

注意:对于这种方法,您通常可以按Cmd+Shift+O并直接进入快速打开... 任何定义可以是 copy/pasted 和 Xcode 的弹出字段将在 project/SDK 中搜索它。在这种情况下注意 iOS 范围。