Как передать список параметров из ViewController в менеджер моделей данных для использования во «вложенных» функциях? - PullRequest
0 голосов
/ 19 апреля 2020

Я довольно новичок в этом и попал в запутанную ситуацию.

У меня есть ViewController, который принимает входные данные для передачи в менеджер моделей данных для обработки, который затем возвращает его для отображения. Я хочу передать список параметров различных типов в диспетчер данных, где они будут использоваться в ряде вложенных функций, только некоторые из которых нуждаются во всех параметрах.

Я играл с двумя методами чтобы решить ее: просто пропустите все параметры через все функции или создайте список параметров типа [Любой]. Мне это тоже не кажется правильным.

Вот основы кода V C, показывающие параметры, которые я хочу передать.

class TriviaViewController: UITableViewController {

var questionsAndAnswers: [TriviaModel] = []
var categoryToGet: [String] = []
var earliestYear = 0
var latestYear = 0
var difficulty: TriviaModel.gameType = .single

Я планирую получить данные с помощью функции который вызывает диспетчер данных, вот так (сейчас я передаю только один параметр для категории, но здесь я хочу передать все из них.

func getTriviaData() {
    triviaManager.fetchTrivia(for: Int(categoryToGet[1])!)
}

В TriviaManager у меня есть серия из трех функций, которые выполняют выборку данных. Первая получает данные, вызывает вторую для анализа, а вторая вызывает третью для выбора данных, которые должны быть возвращены. Вот соответствующие части кода:

func performRequest(with urlString: String) {
   ... some fetching code that uses only the url parameter ...
      if let triviaModel = self.parseJSON(safeData) {
   ...
}

func parseJSON(_ triviaData: Data) -> [TriviaModel]? {
... some code that parses using none of the parameters ...


 let selectedContent = selectContent(contentArray: content, forType: .single)
        return selectedContent
 ...
}

func selectContent(contentArray: [TriviaModel], forType: TriviaModel.gameType) -> [TriviaModel] {
    ... some code which selects the right data using all the parameters

Нужно ли передавать все параметры через две функции, которые им не нужны, или есть лучший способ?

...