搜索时在字符类型上创建 url 请求的好方法

Posted

技术标签:

【中文标题】搜索时在字符类型上创建 url 请求的好方法【英文标题】:Good approach for create url request on character type while search 【发布时间】:2014-07-01 16:34:23 【问题描述】:

我已经实现了 AutoSuggest API(类似于 Google 搜索)。 API 给出了在搜索栏中输入的字符的建议列表。 例如:在 Google 搜索中输入时,它会在搜索栏底部显示建议列表。

我们可以使用任何好的方法或设计模式来对每个 char 类型调用此 API。

当前的实现是: 1. 搜索栏上的字符类型 2. 创建一个 NSURLRequest 并将其传递给 NSURLConnection 对象 3. 解析响应并显示建议。 4. 再次char类型只是在生成请求并传递给NSURLConnection之前取消NSURLConnection。

我关心的是什么是实现这一点的好方法。

提前致谢。 问候, 鲁亚姆

【问题讨论】:

这实际上是一个非常有趣的问题! :) 类似问题:***.com/questions/24515294/… Still Struggling.. 上面的链接有点相似:) @ruyamonis346 你有没有为你的问题找到任何解决方案,请更新它你知道答案通过发布答案 【参考方案1】:

您显然不能等到收到回复。当你收到第一封信的回复时,我又打了三个信:-)

首先检查在输入一个或两个字母后给出任何选择是否有意义(您的决定)。然后做一些测量来检查取消之前的请求是否有意义。如果您一直取消建议,您可能永远不会收到任何条建议。并且一旦一个 NSURLConnection 开始运行,取消它可能不会保存任何东西(一旦请求发送到服务器,服务器就会回复,唯一的区别是你是否忽略它)。

我会在每个字母之后发送请求,避免在用户删除一个字符后两次发送相同的请求。当响应进入时,缓存它们,但仅在它们仍然相关时才处理它们(用户切换到另一个视图后可能会出现回复!)所有请求显然必须在后台运行。可能会缓存最后十几个请求。并检查用户使用的是 WiFi 还是 3G,或者该 API 可能很昂贵。

【讨论】:

感谢您的回复!同意在删除角色时不发送请求。但是缓存最后一打请求是一种复杂的模式。仍在努力为此使用良好的设计模式【参考方案2】:

您可以使用 NSTimer 使用这种方法:

NSTimer *myTimer;

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText 

    if (myTimer)
    
        if ([myTimer isValid])
        
            [myTimer invalidate];
        
        myTimer=nil;
    
    myTimer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(searchPlaces:) userInfo:nil repeats:NO];


- (void)searchPlaces:(id)sender 


【讨论】:

以上是关于搜索时在字符类型上创建 url 请求的好方法的主要内容,如果未能解决你的问题,请参考以下文章

允许在从 UI 端进行 Post 请求时在 url 中发送特殊字符

使用 hash_map 时在 stl 字符串上使用的最佳散列算法是啥?

使用 hash_map 时在 stl 字符串上使用的最佳散列算法是啥?

如何使用搜索引擎搜索特殊字符? [关闭]

eclipse 项目中搜索资源(类方法,文件名,文件中的字符串)

elasticsearch搜索类型简单介绍