#swift #generics
Вопрос:
Я хочу создать один метод для отображения объекта. Поэтому у меня есть такой метод:
func testDecode<T: Decodable>(from: DocumentSnapshot) -> T? {
do {
return try from.data(as: T.self)
} catch {
return nil
}
}
И я использую его вот так:
let test = testDecode(from: document.data) as? TestModel
но у меня есть ошибка: Generic parameter 'T' could not be inferred
не могу понять, почему у меня эта ошибка, пожалуйста, дайте мне совет
Комментарии:
1. Проголосовали против сокрытия ошибки. Эта функция-всего
try?
лишь ключевое слово.
Ответ №1:
Вы не должны пытаться привести значение, а скорее аннотировать test
, TestModel?
чтобы компилятор мог определить универсальный тип T
как TestModel
.
let test: TestModel? = testDecode(from: document.data)
Комментарии:
1.
: TestModel?
это то жеas TestModel?
самое, что . Знак вопроса просто нужно переместить для эквивалентности.2. спасибо за ответ, но у меня та же ошибка
Generic parameter 'T' could not be inferred
3. @vetaney915, пожалуйста, обновите свой вопрос с вашим определением
DocumentSnapshot
и, в частности, егоdata(as:)
методом, потому что это означает, что проблема будет там внутри