2017-01-04 3 views
0

я в основном имеют этот протоколSwift - Generic, что подклассы и соответствует протоколу

protocol ReusableView { 
    static var reuseIdentifier: String { get } 
    } 

и этот общий класс

class ListController<Item: Equatable, Cell: UITableViewCell>: UIViewController where Cell: ReusableView { 

     private var items: [Item] 

     init(items: [Item]) { 
     self.items = items 
     super.init(nibName: nil, bundle: nil) 
     print(Cell.reuseIdentifier) 
     } 
    } 

Когда я пытаюсь напечатать reuseIdentifier, я получаю эту ошибку компилятора

Участник экземпляра 'reuseIdentifier' не может быть использован для type 'Cell'

Я должен иметь доступ к свойству, поскольку объект Cell соответствует протоколу ReusableView.

Я не знаю, в чем проблема. Любая помощь будет оценена по достоинству.

Благодаря

+0

Похож на ту же проблему, что и [Доступ к статическому свойству расширения протокола] (http://stackoverflow.com/q/41329940/2976878) – Hamish

ответ

3

Проблема возникает из-за Cell должен наследоваться от UITableViewCell, который уже определяет экземпляр переменной reuseIdentifier. Просто изменив имя reuseIdentifier на reusableViewIdentifier, или что-то вызовет ошибку.

Смежные вопросы