나는 또한이 문제가 있었고 내 사례에 대한 해결 방법을 찾았습니다.
이 기사에서 저자는 동일한 문제가 있습니다.
https://www.iphonelife.com/blog/31369/swift-programming-101-generics-practical-guide
따라서 문제는 컴파일러가 T 유형을 어떻게 든 추론해야한다는 것입니다. 그러나 단순히 generic <type> (params ...)을 사용하는 것은 허용되지 않습니다.
일반적으로 컴파일러는 매개 변수 유형을 스캔하여 T 유형을 찾을 수 있습니다. T가 많은 경우에 사용되는 곳이기 때문입니다.
내 경우에는 내 함수의 반환 유형이 T 였기 때문에 조금 달랐습니다. 귀하의 경우에는 함수에서 T를 전혀 사용하지 않은 것 같습니다. 예제 코드를 단순화 한 것 같습니다.
그래서 다음과 같은 기능이 있습니다.
func getProperty<T>( propertyID : String ) -> T
그리고 예를 들어
getProperty<Int>("countProperty")
컴파일러는 나에게 오류를 제공합니다.
일반 함수를 명시 적으로 특수화 할 수 없습니다.
따라서 컴파일러에 T 유형을 추론 할 수있는 또 다른 정보 소스를 제공하려면 반환 값이 저장되는 변수의 유형을 명시 적으로 선언해야합니다.
var value : Int = getProperty("countProperty")
이렇게하면 컴파일러는 T가 정수 여야한다는 것을 알 수 있습니다.
그래서 전반적으로 제네릭 함수를 지정하면 최소한 T를 매개 변수 유형이나 반환 유형에 사용해야한다는 의미라고 생각합니다.