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