Как передать в протокол массив Enum для работы в Swift? - PullRequest
0 голосов
/ 15 января 2019

У меня есть класс, который вызывает функцию в другом классе с использованием протокола:

func calculateTableSize () {            
    // doing some stuff  
    // the call to the other function using the protocol
    summaryPresenter?.onCalculateTableSizeDone()     
}

Я хочу передать массив данных типа enum с помощью этой функции:

class SummaryInteractor: SummaryScreenInteractorFunctionsProtocol {

    //sections
    enum Section: Int, CaseIterable {
        case header = 0, description, diagnoses, perscription, notes, addFaxHeadline,  addFax, addEmailHeadline, addEmails, givePermissionHeadline, selecAnswer, addNewEmail,addNewFax, removableText, headlineEmpty
    }

    var sectionData: [Section] = [
        .header
    ]

...
...

Проблема, очевидно, в том, что я не могу добавить в свой протокол следующие строки (чего я и хочу достичь):

//what will be written in the presenterFromTheInteractor
protocol SummaryScreenInteractorProtocol {
    func onCalculateTableSizeDone(data: [Section])
}

потому что тогда протокол (и все другие классы не будут знать этого нового типа Enum, что такое Selection.

Так что, конечно, это показывает ошибку:

Использование необъявленного типа 'Section'

Как мне передать эти данные раздела другим функциям?

Спасибо

1 Ответ

0 голосов
/ 15 января 2019

Ваше перечисление недоступно из протокола, поскольку оно встроено в другой класс. У вас есть два варианта

  1. Переместить enum за пределы

    enum Section {}
    
    class SummaryInteractor {}
    
  2. Укажите местоположение перечисления: SummaryInteractor.Section

    func onCalculateTableSizeDone(data: [SummaryInteractor.Section])
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...