我有一个结构文件,我在其中处理来自 json 文件的数据,并希望在解码结果为零或类似时显示弹出窗口。
但我注意到我无法在单元格或结构中显示弹出窗口。那么我该如何解决这个问题呢?我想我必须在 tableView 所在的类中声明该函数,但是如何访问我的结构中的函数?
结构searchApi:
...
func newParseJSON(poiData: Data, completionHandler: @escaping () -> Void) {
let decoder = JSONDecoder()
do {
let decodedData = try decoder.decode(POIData.self, from: poiData)
searchApi.dataFromSearchApi = decodedData.results
func displayAlert() {
let dialogMessage = UIAlertController(title: "Json Empty", message: "....", preferredStyle: .alert)
let ok = UIAlertAction(title: "OK", style: .default, handler: { (action) -> Void in
print("Ok button tapped")
})
dialogMessage.addAction(ok)
self.present(dialogMessage, animated: true, completion: nil)
}
//set condition for showing displayAlert
displayAlert()
completionHandler() // Call the completion handler when data is parsed
} catch {
print(error)
}
}...
我的另一个类叫做:SearchPoi 类
您的代码没有任何异步内容,因此这里不需要完成处理程序。
假设您的类型与上一个问题中的类型相同,则该函数可以重写为
func newParseJSON(poiData: Data) throws -> [Result] {
try JSONDecoder().decode(POIData.self, from: poiData).results
}
按照我的喜好或者如果您想使用
self
如问题中那样
func newParseJSON(poiData: Data) throws {
searchApi.dataFromSearchApi = try JSONDecoder().decode(POIData.self, from: poiData).results
}
然后处理错误并在调用此函数时显示任何错误消息。