我有这个代码:
主视图 Controller :
func errorLoginMessage(txt: String, title: String){
let alertController = UIAlertController(title: title, message: txt, preferredStyle: .alert)
alertController.addAction(UIAlertAction(title: "Ok".localized(), style: .cancel, handler: { (action: UIAlertAction!) in
exit(0)
}))
self.present(alertController, animated: true, completion: nil)
}
以及函数 AppSystem.swift 中的文件:
func startUpdate(){
let dispatchGroup = DispatchGroup()
dispatchGroup.enter()
let cms = ServerConnect()
cms.getJsonProducts(completion: { (data) in
switch data {
case .succes(let data):
self.saveJsonFileToTheDiskProducts(downloadData: data)
case .error(let error):
self.errorLoginMessage(txt: "MainView - Error 101: Configuration files can not be created. \(error)", title: "Blad".localized())
print("")
break
}
dispatchGroup.leave()
})
}
我对此有错误:
self.errorLoginMessage(txt: "MainView - Error 101: Configuration files can not be created. \(error)", title: "Blad".localized())
:“AppSystem”类型的值没有成员“errorLoginMessage”
有谁知道怎么解决吗?
最佳答案
由于警报不是您的 AppSystem
类的一部分,因此您需要将消息传递给 MainViewController
以在出现故障时显示消息。
您可以使用委托(delegate)
、通知
或完成 block
,这是完成 block
的示例:
func startUpdate(completion:@escaping(Bool)->()){
// No need of DispatchGroup as pointed by Anbu.Karthik, as with completion block you are making this function work asynchronously only.
//let dispatchGroup = DispatchGroup()
//dispatchGroup.enter()
let cms = ServerConnect()
cms.getJsonProducts(completion: { (data) in
switch data {
case .succes(let data):
self.saveJsonFileToTheDiskProducts(downloadData: data)
completion(true)
case .error(let error):
completion(false)
//self.errorLoginMessage(txt: "MainView - Error 101: Configuration files can not be created. \(error)", title: "Blad".localized())
print("")
break
}
//dispatchGroup.leave()
})
}
在MainViewController
中这样调用它:
startUpdate { (success) in
if !success {
//Show alert
self.errorLoginMessage(txt: "MainView - Error 101: Configuration files can not be created. \(error)", title: "Blad".localized())
}
}
关于ios - 在另一个文件的函数的主视图中显示警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50759827/