我正在尝试通过使用 KeyPaths 更新存储在类的数组属性中的值。这是我的代码:
func listenAndUpdateDocuments<T: JSONDecodable>(
_ property: ReferenceWritableKeyPath<MyModel, [T]?>,
from model: MyModel) {
guard let reference = reference else {
return
}
guard listener == nil else {
return
}
listener = backendClient.listenToDocuments(reference) { [weak model] (result: Result<[T], RequestError>) in
switch result {
case .success(let value):
model?[keyPath: property] = value
case .failure:
model?[keyPath: property] = []
}
}
}
问题是当我这样调用这个函数时:
myListener.listenAndUpdateDocuments(\.viewers, from: self)
whereviewers
是 type [ViewersModel]
,它总是返回以下错误:
Type of expression is ambiguous without more context
我该如何解决这个问题?我有一个类似版本的代码,但property
参数不是数组,并且有效。