GCD终止请求

时间:2016-10-26 15:29:07

标签: ios swift grand-central-dispatch dispatch

我想在延迟后向服务器发送请求,但如果用户已更改状态UITextFiled,则应终止此请求。我现在拥有的是

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {  
    sessionManager.session.invalidateAndCancel()
    APIModel().searchRequest()...
}

但它实际上并没有阻止请求到达服务器。我想我应该在发送请求之前使用GDC delay等待一秒钟,然后,如果UITextField发生更改,则终止它。但我找不到这种逻辑实现的例子。

1 个答案:

答案 0 :(得分:1)

您无法“终止”请求。

您可以使用“已取消”属性创建对象。然后,您调度访问该对象的代码,并在适当的时候检查“已取消”属性是否为true。从外面看,当你有这种感觉时,你会将其取消为真。

如果操作设法完成并检测到它已被取消,那么它应该不会产生任何错误消息,并且不会执行任何其他操作,因为它已被取消。