2011-12-21 4 views
2

Я использую AFNetworking для своего приложения iOs. Мне нужно реализовать поисковое предложение, как во многих других приложениях или в барах поиска на сайтах. Так что в основном запускайте GET-запросы, но отменяя старые, поскольку пользователи нажимают новые символы. Как я могу это сделать? У меня есть подкласс AFHTTPClient, и я использую getPath. Лучше всего было бы, чтобы эти запросы были отклонены и «приоритетными» для любого другого HTTP-запроса в моем подклассе AFHTTPClient singleton. Спасибо заранее.AFNetworking and auto-suggest

ответ

1

Просто используйте этот метод в AFHTTPClient

- (void)cancelHTTPOperationsWithMethod:(NSString *)method andURL:(NSURL *)url 

Sample, если у Вас есть одиночки на AFHTTPClient subclasse:

[[MHHTTPClient sharedHTTPClient] cancelHTTPOperationsWithMethod:@"GET" andURL:[NSURL URLWithString:@"http://www.mysite.com/autocomplete.json?search=tes"]]; 
0

Я считаю, что лучший HTTPClient в AFNetworking используется, когда вы пытаетесь создать приложение на основе конкретной службы, которая будет отправлять запросы на разные пути на одном хосте.

Для таких вещей я бы использовал обычное AFHTTPRequestOperation, которое можно отменить. Я бы сделал класс оболочки с AFHTTPRequestOperation внутри. Затем, на каждом нажатии пользователем, я бы назвал «отменить» в http-запросе (и моей обертке), а затем создаст новый в том же месте и создаст новый запрос. Именно так я уже реализовал его в своих приложениях, и он отлично работает.

Будьте осторожны, хотя. AFNetworking в значительной степени основано на NSOperation, и при вызове отмены вы должны убедиться, что блок завершения NSOperation не будет вызван (или, по крайней мере, сразу же после его вызова). Даже если вы отмените операцию, есть вероятность того, что блок завершения будет по-прежнему вызываться, тем самым создавая утечки памяти и трудно отслеживать ошибки. Лучше всего создать блок завершения и проверить, отменено ли действие, прежде чем продолжить.