Установить значение массива через KeyPath - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь обновить значение, хранящееся в свойстве массива класса, используя 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 не является массивом, и это работает.

...