在iphone中按下每个键时调用webservice
我正在使用一个搜索栏,每当我在搜索栏中输入文本时,它都应该接受该字符串,它将形成一个请求字符串并生成输出。更清楚地说,假设如果我按“c”,我想显示以c开头的城市名称,然后在搜索栏中仍然显示“c”,我按“h”,现在字符串是'ch',所以我使用webservice搜索以'ch'开头的City名称。我使用一种JSON类型的webservice,响应填充在表视图中 我的问题是,当我缓慢地按下按键时,搜索就正确地完成了,但当快速按下按键时,即当我按下“c”键,然后快速按下“h”键。访问Web服务的是“ch”键,然后是“c”键……这使得打印城市以c键开始,而不是以ch键开始 我通过以下方式在每次按键时调用web服务: 语句调用内部的Web服务在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
- (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…谢谢你的花费你回答我问题的宝贵时间