![](/img/trans.png)
[英]Error : An -observeValueForKeyPath:ofObject:change:context: message was received but not handled
[英]Using - observeValueForKeyPath:ofObject:change:context: in Swift 3
我正在嘗試將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
在我的功能簽名是:
func observeValue(forKeyPath keyPath: String?, ofObject: Any?, change: [String : Any]?, context: UnsafeMutableRawPointer?)."
我已閱讀Swift 3遷移指南網站上的建議:
“解決方法:在實現可選需求之前添加一個@objc(objectiveC:name :)屬性,其中包含原始的Objective-C選擇器。”
但是我不清楚這實際上應該如何應用於源文件中,到目前為止我所嘗試的並沒有成功。
任何人都可以解釋如何正確設置嗎?
這是(最終)在Xcode Version 8.0(8A218a)中使用Swift 3.0為我工作的:
@objc
override open func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
只需開始輸入observeValueFor...
並且Xcode
會建議您進行有效的自動完成。 選擇它,你應該很高興。
那么你的功能應該是這樣的:
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.