UISearchBar、textDidChange 事件、MultipleNSUrlConnection、tableView 崩溃
Posted
技术标签:
【中文标题】UISearchBar、textDidChange 事件、MultipleNSUrlConnection、tableView 崩溃【英文标题】:UISearchBar, textDidChange events, MultipleNSUrlConnection, crashes on tableView 【发布时间】:2016-08-12 12:16:05 【问题描述】:在你的 iPhone 应用程序中。
用于搜索功能。我正在使用 UISearchBar 和 WebService 调用。
每当UISearchBar
'TextDidChange' 发生时,Web 服务调用就会发生。
通常我们的输入速度非常快,所以会发生很多 Web 服务调用,我正在使用 NSURLConnection,并且我在 Finished Loading 上加载表格。
例如, M 的 Web 服务调用 网络服务调用 Mo WebService 调用 Mor
这里,问题是一个 web 服务将要完成,在另一个 web 服务调用之间。这会造成混乱。
到这里,我解决了写作的问题。
**[connectionSearch cancel];**
connectionSearch=[[NSURLConnection alloc] initWithRequest:request delegate:self];
【问题讨论】:
【参考方案1】:将这段代码写在textDidChange
调用Webservice的方法中
[NSObject cancelPreviousPerformRequestsWithTarget:self];
[self webserviceCallMethod];
你也可以在cancelPreviousPerformRequestsWithTarget:self
之后调用如下服务
[self performSelector:@selector(webserviceCallMethod:) withObject:searchText afterDelay:0.3f]; // after delay can be an anything that helps.
不要忘记从数组中删除所有对象,然后再将对象添加到数组以响应您的 Web 服务。 (UITableView 单元格中使用的数组)
希望对你有帮助。
【讨论】:
我同时有两个不同类型的网络服务调用。那么,它会工作 NSObject cancelPreviousRequest,而是我做了类似的事情。看我的回答。 好的,很高兴知道新方法。仅用于NSURLConnection
的信息应用程序将不再被 Apple 批准。参考:***.com/a/37693532/5012384
它受支持,如您的链接中所述。请参阅您帖子中的第一个答案。并感谢分享上述链接。【参考方案2】:
我改变了代码,
**[connectionSearch cancel];**
connectionSearch=[[NSURLConnection alloc] initWithRequest:request delegate:self];
因此,每当发生相同的 Search Web 服务调用时,如果调用未完成,调用将被取消并发生新的 Web 服务调用。
【讨论】:
它消除了我在 connectionDidFinishLoading 上调用的 tableview reloaddata 的混乱。谢谢以上是关于UISearchBar、textDidChange 事件、MultipleNSUrlConnection、tableView 崩溃的主要内容,如果未能解决你的问题,请参考以下文章
帮助 UISearchBar,位于 UITableView 的第一个单元格?不会进入 searchBar:textDidChange 方法
UIKit SearchBar 过滤 textDidChange 中的两个数组