Функция, которая возвращает массив - PullRequest
0 голосов
/ 15 января 2020

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

public func getAdminSites(){

    let getSiteData = UserDefaults.standard.object(forKey: "adminSites")
    if getSiteData != nil
    {
        do {
            guard let sitesData = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(getSiteData as! Data) as? [ModelSites] else {
               fatalError("loadWidgetDataArray - Can't get Array")
            }
            var optionArray = ["All sites"]
            for i in 0...sitesData.count-1 {
                optionArray.append(sitesData[i].name)
            }

        } catch {
            fatalError("loadWidgetDataArray - Can't encode data: \(error)")
        }
    }

    return optionArray
}

1 Ответ

4 голосов
/ 15 января 2020

Есть две ошибки:

  • В определении функции отсутствует тип возвращаемого значения
  • OptionArray (сохраненная переменная) объявлена ​​в потоке управления if область действия и недоступна в уровень тела функции

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


Фиксированный код:

public func getAdminSites() -> [String] {

    let getSiteData = UserDefaults.standard.object(forKey: "adminSites")
    var optionArray = [String]()
    if getSiteData != nil
    {
        do {
            guard let sitesData = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(getSiteData as! Data) as? [ModelSites] else {
               fatalError("loadWidgetDataArray - Can't get Array")
            }
            optionArray = ["All sites"]
            for i in 0...sitesData.count-1 {
                optionArray.append(sitesData[i].name)
            }

        } catch {
            fatalError("loadWidgetDataArray - Can't encode data: \(error)")
        }
    }

    return optionArray
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...