首页 > 解决方案 > 返回数组的函数

问题描述

我试图让一个数组从我调用的函数返回,但下面代码中的返回 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
}

标签: swiftxcode

解决方案


有两个错误:

  • 函数定义缺少返回类型
  • 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
}

推荐阅读