`は、「一般的なパラメータvalueが推測することができませんでした」のように私は、ジェネリックであるクラスを持っています行うことができる:observe`
row.bind(to: \ExampleClass.category)
次にbind
に私はクラスを持っているというのが私のExampleClass
例えばExampleClass.category
を観察し始めたいです。
私が実装しました:Generic parameter 'Value' could not be inferred
:
func bind<Value>(to targetKeyPath: ReferenceWritableKeyPath<T, Value>) {
if let model = model as? NSObject {
model.observe(targetKeyPath, options: [.new ,.old], changeHandler: { _, change in
Log.info?.msg("Now we have some stuff: \(change)")
})
}
}
これは私にエラーを与えます。
どうすれば可能ですか? T
は解決されますが、なぜValue
を推測できないのですか?パラメータはtargetKeyPath
である必要があります。
repoducableのための完全なコード:あなたは上-考え、これをおそらくだ
class Person: NSObject {
@objc var age: NSNumber?
}
class Book: NSObject {
@objc var title: String?
}
let row1 = Row(model: Person())
let row2 = Row(model: Book())
row1.bind(to: \Person.age)
row2.bind(to: \Book.title)
私たちが再現できるように十分なコードを入力してください。例えば、 'モデル'は何ですか? – matt
@mattは、コードを再現するためにコードを追加しました – netigger
あなたが引用したエラーは、 'row.bind(to:\ ExampleClass.category)'を呼び出すかどうかにかかわらず、_without_参照になります。 'bind'自体がどのように定義されているかは事実です。あなたは「価値」を解決すると思いますか? – matt