错误:覆盖public func observeValueForKeyPath

36 *_*ign 18 key-value-observing ios swift

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

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

override public func observeValueForKeyPath...
Run Code Online (Sandbox Code Playgroud)

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

所以我拿出"覆盖":

public func observeValueForKeyPath
Run Code Online (Sandbox Code Playgroud)

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

Yev*_*nin 30

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

iOS SDK 9.0

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

在iOS SDK 9.0之前

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

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

  • IOS:10覆盖func observeValue(forKeyPath keyPath:String ?,of object:Any ?, change:[NSKeyValueChangeKey:Any] ?, context:UnsafeMutableRawPointer?){ (7认同)

mat*_*att 22

[NSObject:AnyObject]将声明变更为[String:AnyObject].

  • 谢谢,很抱歉,对于菜鸟的问题,但我非常感谢您的帮助。 (2认同)