Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iphone中按下每个键时调用webservice_Iphone_Web Services_Asynchronous_Uisearchbar - Fatal编程技术网

在iphone中按下每个键时调用webservice

在iphone中按下每个键时调用webservice,iphone,web-services,asynchronous,uisearchbar,Iphone,Web Services,Asynchronous,Uisearchbar,我正在使用一个搜索栏,每当我在搜索栏中输入文本时,它都应该接受该字符串,它将形成一个请求字符串并生成输出。更清楚地说,假设如果我按“c”,我想显示以c开头的城市名称,然后在搜索栏中仍然显示“c”,我按“h”,现在字符串是'ch',所以我使用webservice搜索以'ch'开头的City名称。我使用一种JSON类型的webservice,响应填充在表视图中 我的问题是,当我缓慢地按下按键时,搜索就正确地完成了,但当快速按下按键时,即当我按下“c”键,然后快速按下“h”键。访问Web服务的是“ch

我正在使用一个搜索栏,每当我在搜索栏中输入文本时,它都应该接受该字符串,它将形成一个请求字符串并生成输出。更清楚地说,假设如果我按“c”,我想显示以c开头的城市名称,然后在搜索栏中仍然显示“c”,我按“h”,现在字符串是'ch',所以我使用webservice搜索以'ch'开头的City名称。我使用一种JSON类型的webservice,响应填充在表视图中

我的问题是,当我缓慢地按下按键时,搜索就正确地完成了,但当快速按下按键时,即当我按下“c”键,然后快速按下“h”键。访问Web服务的是“ch”键,然后是“c”键……这使得打印城市以c键开始,而不是以ch键开始

我通过以下方式在每次按键时调用web服务:

语句调用内部的Web服务

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchString {

....

...
 [NSThread detachNewThreadSelector: @selector(callService) toTarget:self withObject:nil];
}

and inside the callService method.....

- (void)callService{
    NSAutoreleasePool *pool = [ [ NSAutoreleasePool alloc ] init ];
    [self performSelectorOnMainThread:@selector(initializeRequest) withObject:nil waitUntilDone:NO]; 
    [pool release];

}

- (void)initializeRequest {


....Here i form the request string...
create connection and after creating connection i use NSURLConnectionDelegate Methods to parse the connection
}
有没有什么方法可以让搜索过程顺利进行


当搜索栏中的文本发生更改时,请任何人向我推荐任何其他替代方案或方法来执行此类即时搜索。非常感谢您跟踪您的连接,当您形成新请求时,请先取消旧连接

[prevURLConnection cancel];

跟踪您的连接,当您形成新请求时,请先取消旧连接

[prevURLConnection cancel];

我不明白你为什么要调用后台线程来执行主线程中的请求。它似乎有点多余,或者我不明白:-(。我不明白为什么您要调用后台线程来在主线程中执行请求。它似乎有点多余,或者我不明白:-(.这很有效。我也提到了堆栈溢出问题的这一部分,我找到了相同的解决方案。谢谢Mundi…谢谢你花宝贵的时间回答我的问题。这很有效。我也提到了堆栈溢出问题的这一部分,我找到了相同的解决方案。谢谢Mundi…谢谢你的花费你回答我问题的宝贵时间