У меня тоже была эта проблема, и я нашел способ ее решения.
В этой статье у автора та же проблема
https://www.iphonelife.com/blog/31369/swift-programming-101-generics-practical-guide
Итак, проблема, похоже, в том, что компилятор должен каким-то образом вывести тип T. Но нельзя просто использовать общий <тип> (параметры ...).
Обычно компилятор может искать тип T, просматривая типы параметров, потому что именно здесь T используется во многих случаях.
В моем случае это было немного иначе, потому что тип возвращаемого значения моей функции был T. В вашем случае кажется, что вы вообще не использовали T в своей функции. Думаю, вы просто упростили пример кода.
Итак, у меня есть следующая функция
func getProperty<T>( propertyID : String ) -> T
А в случае, например,
getProperty<Int>("countProperty")
компилятор выдает ошибку:
Невозможно явно специализировать универсальную функцию
Итак, чтобы предоставить компилятору другой источник информации, из которого можно сделать вывод о типе T, вы должны явно объявить тип переменной, в которой сохраняется возвращаемое значение.
var value : Int = getProperty("countProperty")
Таким образом, компилятор знает, что T должно быть целым числом.
Поэтому я думаю, что в целом это просто означает, что если вы указываете универсальную функцию, вы должны хотя бы использовать T в своих типах параметров или в качестве возвращаемого типа.