【发布时间】:2016-04-21 05:34:49
【问题描述】:
我的 Helper 类中有一个发布请求,在收到响应后,我想设置一个委托和一个函数以在我的 ViewController 上运行。然而,由于这是一个异步任务,我觉得它是否一定会成功。
我尝试设置协议和委托,但是我无法在 Helper 和 ViewController 之间设置正确的协议
我的 VC:
class MyTableViewController: UITableViewController, HelperDelegate {
viewDidLoad() {
let myHelper = Helpers()
myHelper.HelpersSettingsDelegate = self
}
func update(newUrl: String {
// save string to db
}
我的助手:
protocol HelperDelegate : UITableViewController {
func update(newUrl: String)
}
class Helpers: NSObject {
var HelpersSettingsDelegate : HelperDelegate?
...
case .Success(let upload, _, _):
upload.responseJSON { response in
print("SUCCESS")
debugPrint(response)
let new = response.result.value!["success"]
if let delegate = self.HelperSettingsDelegate {
delegate.update(new)
}
}
self.HelperSettingsDelegate错误,类型“Helpers”没有成员“HelpersSettingsDelegate”
所以我的问题是
为什么我的协议不起作用?
使用这种方法是否安全,或者在响应时间之间可能会丢失一些数据(如果用户在运行委托方法之前离开页面)?
编辑:如果我尝试使用protocol HelperDelegate { },它会强制我使用HelperSettingsDelegate.updateUploadedImageString(Self)
【问题讨论】:
标签: ios swift asynchronous delegates protocols