2017-11-03 4 views
2

Schaffung dieser Eingabe (konstruiertes Beispiel) -CodeRischer Parameter ‚Wert‘ nicht blockbasierten KVO abgeleitet werden können in schnellen

import Foundation 

protocol ValueProviderProtocol { 
    var amount: Int { get } 
} 

class ValueProvider: NSObject, ValueProviderProtocol { 
    @objc dynamic var amount = 0 
} 

let _provider = ValueProvider() 

var provider: ValueProviderProtocol { return _provider } 

let subject = provider as! NSObject 

let observer = subject.observe(\ValueProviderProtocol.amount, options: [.old, .new]) { (provider, changes) in 

} 

in ein Xcode 9 Spielplatz, Ergebnisse in diesen Fehlern für den Anruf zu unterziehen. beobachten:

Rischer Parameter 'Wert' nicht

abgeleitet werden könnte es, was nicht klar ist, ist CAU singe den Fehler. Was kann getan werden, um diese Art von Problem zu beheben?

Antwort

1

Die folgende Zeile:

let observer = subject.observe(\ValueProviderProtocol.amount, 
           options: [.old, .new]) 
           { (provider, changes) in 
} 

Bedürfnisse sich ändern in zu:

let observer = _provider.observe(\.amount, 
           options: [.old, .new], 
           changeHandler: { (provider, changes) in 

}) 

U versuchen, nicht auf das Motiv zu beobachten, da zu einem NSObject downcasted wird, die nicht die Eigenschaft Höhe hat. And second \ ValueProviderProtocol.amount ist ein partieller Schlüsselpfad, der den Werttyp nicht berücksichtigt. Die Anzahl ist ein KeyPath, der den Schlüsselpfad

enthält
Verwandte Themen