내가 서브 클래 싱중인 클래스에서 Swift의 제네릭 유형을 어떻게 반환합니까?

user1951992

이해할 수없는 오류가 발생합니다. 어떤 도움을 주시면 감사하겠습니다.

BaseViewController 클래스를 재정의하고 TableViewHandler의 하위 클래스를 반환하고 싶습니다.

class VenueViewController: BaseViewController {

    override func tableHandler<T : TableViewHandler>() -> T? {
        return VenuesTableViewHandler(delegate: self) // Error here VenuesTableViewHandler is not convertible to 'T'
    }

}

이것이 내 BaseViewController의 모습입니다.

class BaseViewController: UIViewController {

    var tableViewHandler: AnyObject! {
        get {
            return self.tableHandler()
        }
    }

    func tableHandler<T: TableViewHandler >() -> T? {
        return nil
    }
}

'VenuesTableViewHandler가'T '로 변환 할 수 없다는 오류가 발생합니다. 도움이된다면 TableViewHandler 클래스의 모습입니다.

TableViewHandler는 다음과 같은 클래스입니다.

class TableViewHandler: NSObject, UITableViewDelegate, UITableViewDataSource {

    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
            return 0
    }

    ///etc

}

이것은 TableViewHandler 하위 클래스의 모습입니다.

class VenuesTableViewHandler: TableViewHandler {

    init(delegate: VenueListProtocol) {
        self.delegate = delegate
        super.init()
    }

}
마테오 피 옴보

아직도 당신이 무엇을 시도하고 있는지 완전히 명확하지 않습니다. 다음이 당신의 필요에 부합합니까?

class TableViewHandler: NSObject, UITableViewDelegate, UITableViewDataSource {

    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 0
    }

    ///etc

}

class BaseViewController: UIViewController {

    var tableViewHandler: TableViewHandler {
        get {
            assertionFailure("Must override ...")
            //return TableViewHandler()
        }
    }
}

class VenuesTableViewHandler: TableViewHandler {
    init(delegate: AnyObject) {
        // Custom implementation
    }
}

class VenueViewController: BaseViewController {

    override var tableViewHandler: TableViewHandler {
        return VenuesTableViewHandler(delegate: self)
    }
}

여기서는 제네릭 을 전혀 사용하지 않습니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

제네릭을 사용한 C # 서브 클래 싱 : ctor에 대한 추가 제네릭 매개 변수가 필요하지만 어떻게해야합니까?

분류에서Dev

제네릭 래퍼 인터페이스 유형을 어떻게 정의하고 Java에서 메소드 반환 유형으로 사용합니까?

분류에서Dev

서브 클래스의 유형을 어떻게 확인합니까?

분류에서Dev

C #에서 제네릭 클래스의 속성을 어떻게 반복합니까?

분류에서Dev

클래스 인스턴스에서 복제 된 객체의 유형을 어떻게 얻습니까?

분류에서Dev

클래스 자체가 private 변수에 액세스 할 수 있다는 점을 제외하고 Java에서와 같이 서브 클래스 객체가 수퍼 클래스의 개인 변수에 어떻게 액세스합니까?

분류에서Dev

NamedTuple의 서브 클래 싱은 호환되지 않는 반환 유형 / 인수 유형을 제공합니다.

분류에서Dev

Java의 자체 클래스에서 클래스의 열거 형을 어떻게 반환합니까?

분류에서Dev

TreeMap 내에서 현재 클래스의 인스턴스를 값으로 어떻게 반환합니까?

분류에서Dev

TypeScript-메소드의 매개 변수에서 클래스 제네릭 유형을 어떻게 추론합니까?

분류에서Dev

C #의 기본 클래스에서 제네릭 사용 : 기본 클래스의 메서드가 파생 클래스의 형식을 반환하는지 확인하는 방법은 무엇입니까?

분류에서Dev

Haskell에서 형식 클래스 멤버의 반환 값에 대한 형식 클래스 제약 조건을 어떻게 표현합니까?

분류에서Dev

제네릭 클래스의 메서드가 지정된 유형을 반환하지 않습니다. 왜?

분류에서Dev

제네릭 클래스의 메서드가 지정된 유형을 반환하지 않습니다. 왜?

분류에서Dev

List <T>에서 파생 된 클래스의 추가 내용을 어떻게 확인합니까?

분류에서Dev

어떻게 제네릭 클래스는 하나 개의 클래스 또는 다른에서 확장을 나타냅니다 할 수 있습니까?

분류에서Dev

제네릭 유형의 제네릭 클래스에서 유형 인수에 액세스

분류에서Dev

일반 수퍼 클래스의 특정 하위 클래스에 대한 실제 반환 유형을 어떻게 확인할 수 있습니까?

분류에서Dev

제네릭 인 클래스 서명을 갖는 구체적인 유형을 신속하게 변환

분류에서Dev

메서드에서 제네릭 클래스를 반환하려면 어떻게해야합니까?

분류에서Dev

제네릭 반환 유형을 사용하여 메서드에서 구체적인 클래스의 인스턴스를 반환하는 방법

분류에서Dev

Swift에서 메서드는 제네릭 유형을 어떻게 반환합니까?

분류에서Dev

여러 클래스에서 확인란 속성을 제어 할 때 클래스가 서로 어떻게 작동합니까?

분류에서Dev

제네릭 메서드에서 형식 인수로 사용중인 클래스의 기본 클래스 속성에 액세스 할 수 없습니다.

분류에서Dev

기본 클래스의 메서드를 사용하여 중첩 클래스에서 제네릭 형식을 반환하는 방법

분류에서Dev

제네릭 클래스의 제네릭 메서드에 동적 유형의 인스턴스 전달

분류에서Dev

TypeScript에서 다른 유형의 조합 인 제네릭 유형을 어떻게 만들 수 있습니까?

분류에서Dev

R6 클래스에 대한 S3 제네릭을 어떻게 문서화합니까?

분류에서Dev

C #에서 제네릭을 사용할 때 자식 클래스의 재정의 된 메서드를 어떻게 실행합니까?

Related 관련 기사

  1. 1

    제네릭을 사용한 C # 서브 클래 싱 : ctor에 대한 추가 제네릭 매개 변수가 필요하지만 어떻게해야합니까?

  2. 2

    제네릭 래퍼 인터페이스 유형을 어떻게 정의하고 Java에서 메소드 반환 유형으로 사용합니까?

  3. 3

    서브 클래스의 유형을 어떻게 확인합니까?

  4. 4

    C #에서 제네릭 클래스의 속성을 어떻게 반복합니까?

  5. 5

    클래스 인스턴스에서 복제 된 객체의 유형을 어떻게 얻습니까?

  6. 6

    클래스 자체가 private 변수에 액세스 할 수 있다는 점을 제외하고 Java에서와 같이 서브 클래스 객체가 수퍼 클래스의 개인 변수에 어떻게 액세스합니까?

  7. 7

    NamedTuple의 서브 클래 싱은 호환되지 않는 반환 유형 / 인수 유형을 제공합니다.

  8. 8

    Java의 자체 클래스에서 클래스의 열거 형을 어떻게 반환합니까?

  9. 9

    TreeMap 내에서 현재 클래스의 인스턴스를 값으로 어떻게 반환합니까?

  10. 10

    TypeScript-메소드의 매개 변수에서 클래스 제네릭 유형을 어떻게 추론합니까?

  11. 11

    C #의 기본 클래스에서 제네릭 사용 : 기본 클래스의 메서드가 파생 클래스의 형식을 반환하는지 확인하는 방법은 무엇입니까?

  12. 12

    Haskell에서 형식 클래스 멤버의 반환 값에 대한 형식 클래스 제약 조건을 어떻게 표현합니까?

  13. 13

    제네릭 클래스의 메서드가 지정된 유형을 반환하지 않습니다. 왜?

  14. 14

    제네릭 클래스의 메서드가 지정된 유형을 반환하지 않습니다. 왜?

  15. 15

    List <T>에서 파생 된 클래스의 추가 내용을 어떻게 확인합니까?

  16. 16

    어떻게 제네릭 클래스는 하나 개의 클래스 또는 다른에서 확장을 나타냅니다 할 수 있습니까?

  17. 17

    제네릭 유형의 제네릭 클래스에서 유형 인수에 액세스

  18. 18

    일반 수퍼 클래스의 특정 하위 클래스에 대한 실제 반환 유형을 어떻게 확인할 수 있습니까?

  19. 19

    제네릭 인 클래스 서명을 갖는 구체적인 유형을 신속하게 변환

  20. 20

    메서드에서 제네릭 클래스를 반환하려면 어떻게해야합니까?

  21. 21

    제네릭 반환 유형을 사용하여 메서드에서 구체적인 클래스의 인스턴스를 반환하는 방법

  22. 22

    Swift에서 메서드는 제네릭 유형을 어떻게 반환합니까?

  23. 23

    여러 클래스에서 확인란 속성을 제어 할 때 클래스가 서로 어떻게 작동합니까?

  24. 24

    제네릭 메서드에서 형식 인수로 사용중인 클래스의 기본 클래스 속성에 액세스 할 수 없습니다.

  25. 25

    기본 클래스의 메서드를 사용하여 중첩 클래스에서 제네릭 형식을 반환하는 방법

  26. 26

    제네릭 클래스의 제네릭 메서드에 동적 유형의 인스턴스 전달

  27. 27

    TypeScript에서 다른 유형의 조합 인 제네릭 유형을 어떻게 만들 수 있습니까?

  28. 28

    R6 클래스에 대한 S3 제네릭을 어떻게 문서화합니까?

  29. 29

    C #에서 제네릭을 사용할 때 자식 클래스의 재정의 된 메서드를 어떻게 실행합니까?

뜨겁다태그

보관