簡體   English   中英

使用 - observeValueForKeyPath:ofObject:change:context:在Swift 3中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM