ios - 将异步数据发送到 UIPickerViewDelegate 的问题
问题描述
我正在尝试发送使用从文件下载和一些解析中异步接收的一些数据,
func getMachineName(completion: @escaping (String) -> Void ) {
let machineNumberData = self.advertData[CBAdvertisementDataManufacturerDataKey]
if machineNumberData != nil {
if let data = machineNumberData as? Data {
// use `data` for the bytes
let hexData = data.hexEncodedString()
// range
let number = String(hexData[hexData.index(hexData.startIndex, offsetBy: 12)...hexData.index(hexData.startIndex, offsetBy: 15)])
let machineNumberHex = machineNumberHexToDecimal(machineNumberHex: number)
getMachineNameFromMachineNumber(machineNumber: machineNumberHex) { (machineName) in
print("machine name from main: \(machineName)")
completion(machineName)
}
} else {
NSLog("Error parsing Machine number")
}
}
}
然后我从闭包中获取数据并尝试将其传递给pickerView
private func _pv(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String {
let dev = self.pickerDevices[row]
let id = dev.internalUUID
guard let name = dev.name
else {
return "\(id)"
}
dev.adData.getMachineName { (mName) in
print("machine name from wbmanager: \(mName)")
// Problem -> Unexpected non-void return value in void function
return "\(mName)"
}
// Problem -> Cannot find 'mName' in scope
return "\(name) \(mName)"
}
public func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return self._pv(pickerView, titleForRow: row, forComponent: component)
}
但是我无法访问闭包之外的数据以将其发送到pickerview。
任何帮助,将不胜感激!
解决方案
推荐阅读
- c++ - 如何定义基于 enable_if_t 的重载
- javascript - JEST:函数内的测试用例未从构造函数获取值
- c - 检查像素是否在青少年游戏中发生碰撞
- docker - 如何将 NFS 转换为 kubernetes 中的存储类
- python-3.x - 我根据问题陈述正确使用了 to_csv 中的索引函数吗?
- ios - 无法在itunes中添加新版本
- r - 根据 R 中 30 分钟或更长的时间差识别离散事件
- python - 如何在python中计算加权排列概率
- google-compute-engine - 错误 403:terraformproject 所需的“compute.zones.get”权限
- android - 通过引用设置参数会抛出 UnsupportedOperationException