错误:覆盖public func observeValueForKeyPath

时间:2015-07-09 04:34:49

标签: ios swift key-value-observing

我正在使用与xCode7 Beta 2兼容的代码。刚刚获得Beta 3,现在我遇到了这个似乎是xCode错误的问题?

对于我的一个公开课......

override public func observeValueForKeyPath...

错误:方法不会覆盖其超类中的任何方法

所以我拿出“覆盖”:

public func observeValueForKeyPath

错误:方法与具有相同Objective-C选择器的超类NSObject中的方法冲突 哈!我被第一个错误骗了。不会以任何方式编译。
有什么帮助吗?

2 个答案:

答案 0 :(得分:30)

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

iOS SDK 9.0

override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) { 
    //...
}

iOS SDK 9.0之前

override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject: AnyObject], context: UnsafeMutablePointer<Void>) {
    // ...
}

注意:对于像这样的方法,您通常可以按Cmd+Shift+O直接进入快速打开... 弹出字段,其中有任何定义可以复制/粘贴,Xcode将在项目/ SDK中搜索它。在这种情况下,请注意iOS范围。

答案 1 :(得分:22)

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