Cos*_*smo 8 cocoa ios swift swift3
我正在尝试将Swift 2.2项目转换为Swift 3,我收到以下错误:
Method 'observeValue(forKeyPath:ofObject:change:context:)' with Objective-C selector 'observeValueForKeyPath:ofObject:change:context:' conflicts with method 'observeValue(forKeyPath:of:change:context:)' from superclass 'NSObject' with the same Objective-C selector" for the function call
Run Code Online (Sandbox Code Playgroud)
在我的功能签名是:
func observeValue(forKeyPath keyPath: String?, ofObject: Any?, change: [String : Any]?, context: UnsafeMutableRawPointer?)."
Run Code Online (Sandbox Code Playgroud)
我已阅读Swift 3迁移指南网站上的建议:
"解决方法:在实现可选需求之前添加一个@objc(objectiveC:name :)属性,其中包含原始的Objective-C选择器."
但是我不清楚这实际上应该如何应用于源文件中,到目前为止我所尝试的并没有成功.
任何人都可以解释如何正确设置吗?
Mar*_*ham 18
这是(最终)在Xcode Version 8.0(8A218a)中使用Swift 3.0为我工作的:
@objc
override open func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
Run Code Online (Sandbox Code Playgroud)
Cri*_*tik 16
只需开始输入observeValueFor...,Xcode就会建议您使用有效的自动完成功能.选择它,你应该很高兴.
那么你的功能应该是这样的:
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5913 次 |
| 最近记录: |