swift - 返回数组的函数
问题描述
我试图让一个数组从我调用的函数返回,但下面代码中的返回 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
}
解决方案
有两个错误:
- 函数定义缺少返回类型
- 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
}
推荐阅读
- sonos - GET 收藏夹/播放列表有时会返回 500
- angular - 角度变化检测仅检测产品中的变化
- syslog-ng - 远程 syslog 服务器在转发 apache 日志时未从 syslog-ng 获取 IP 地址
- android - 如何在不取消配对的情况下让两个 Android 设备连接到同一个蓝牙设备?
- sql - 如何根据前几行的条件查找日期之间的差异
- sql-server - Invoke-SqlCmd 在包含另一个 Invoke-SqlCmd 的循环中使用时会生成异常
- c# - 在 C# 中使用基本身份验证调用 WEB API
- python-3.x - 如何查找不在另一个列表中的列表项?
- python - Pandas GroupBy - 如何使用 diff() 从 DateTime 中提取秒数,不包括周末
- javascript - 填充重叠的圆形区域