Я пытаюсь обновить значение, хранящееся в свойстве массива класса, используя 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)
, где viewers
имеет тип [ViewersModel]
, он всегда возвращается со следующей ошибкой:
Type of expression is ambiguous without more context
Как мне решить это? У меня есть похожая версия кода, но где параметр property
не является массивом, и это работает.