Próbuję przekonwertować Swift 2.2 projektu Swift 3, a ja otrzymuję następujący błąd:- observeValueForKeyPath: ofObject: zmiana: kontekst: w 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
Na mojej funkcji, której podpis brzmi:
func observeValue(forKeyPath keyPath: String?, ofObject: Any?, change: [String : Any]?, context: UnsafeMutableRawPointer?)."
Czytałem informacje na Swift 3 Migration Guide stronie internetowej:
"Workaround: Add an @objc(objectiveC:name:) attribute before the implementation of the optional requirement with the original Objective-C selector inside."
Ale to nie jest cl Ucho do mnie, jak to faktycznie ma być stosowane w pliku źródłowym, i nic, co próbowałem do tej pory, nie działało pomyślnie.
Czy ktoś może wyjaśnić, jak ustawić to poprawnie?
nie działa (jak Swift 3.0.1) zobacz + odpowiedź Mark –
Wygląda na to, że klasa ta musi być podklasą NSObject. Próbowałem to zrobić w singleton bez podklasy NSObject i nie działa. –
@SunnyPatel tak, KVO działa tylko z podklasami NSObject (w rzeczywistości tylko z klasami zarządzanymi w środowisku wykonawczym Objc). – Cristik