2014-08-29 3 views
7

java에서는 아래와 같이 일반 메서드를 사용할 수 있습니다.이 메서드는 형식을 명시 적으로 지정하고 메서드로 인수로 전달합니다. 이것이 가능한가요? 내가Swift - 일반 메서드

public func fetchObject (id: Int /* Somehow pass the type */) -> T? { 
    // I need a way to know what class type has to be used with this generic method 
    // Create NSEntityDescription based on the generic class passed 
    // managedObjectContext getExistingObjectById 
} 
+0

을 처리하는 방법을보다 더 사용했다 무엇인가 -1? 어때요? – aryaxt

+0

@Zaph 내가 했어. 나는 신속하게 제네릭 함수를 작성하는 방법을 이미 알고있다. 이것은 특별한 경우입니다. 당신은 또한 클래스 유형을 전달합니다. – aryaxt

+0

예, 이유없이 드라이브 다운 투표가 도움이되지 않으며 오히려 족제비 같아요. – zaph

답변

7

T.Type을 달성하기 위해 노력하고있어

public T fetchObject(Class<T> clazz, int id) { 
    // My table name is the same as class name 
    // So based on the generic type passed to method I want to fetch that record. 
} 

User user = fetchObject(User.class, 5); 

내가 자바이

public func fetchObject<T> (id: Int, type: T.Type) -> T? { 

} 

사용

var myClass = fetchObject(5, MyClass.self) 
+0

이 경우 과부하가 더 좋지 않습니까? 예 : func fetchObject (id : Int, type : User.Type) -> User' 또는 더 나은 func fetchUser (id : Int) -> User'? – CouchDeveloper

+0

이것은 문제를 설명하기 위해 제공 한 예일뿐입니다. 내가 실제로 달성하고자하는 것은 사전과 클래스 유형을 취한 다음 키/값을 기반으로 NSManagedObject를 작성하고 컨텍스트를 저장하는 메소드입니다. – aryaxt

+0

그렇다면 키/딕셔너리 사전은 어떻습니까? 더 우아하게 끝날 수도 있습니다. – CouchDeveloper