【问题标题】:UISearchBar, textDidChange events, MultipleNSUrlConnection, crashes on tableViewUISearchBar、textDidChange 事件、MultipleNSUrlConnection、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];

【问题讨论】:

    标签: ios objective-c objective-c-blocks


    【解决方案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 批准。参考:stackoverflow.com/a/37693532/5012384
    • 它受支持,如您的链接中所述。请参阅您帖子中的第一个答案。并感谢分享上述链接。
    【解决方案2】:

    我改变了代码,

      **[connectionSearch cancel];**   
    
      connectionSearch=[[NSURLConnection alloc] initWithRequest:request delegate:self];
    

    因此,每当发生相同的 Search Web 服务调用时,如果调用未完成,调用将被取消并发生新的 Web 服务调用。

    【讨论】:

    • 它消除了我在 connectionDidFinishLoading 上调用的 tableview reloaddata 的混乱。谢谢
    猜你喜欢
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多