AFNetworking и автоматическое предложение - PullRequest
2 голосов
/ 21 декабря 2011

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

Ответы [ 2 ]

1 голос
/ 21 декабря 2011

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

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

Пример, если у вас есть синглтон на подклассе AFHTTPClient:

[[MHHTTPClient sharedHTTPClient] cancelHTTPOperationsWithMethod:@"GET" andURL:[NSURL URLWithString:@"http://www.mysite.com/autocomplete.json?search=tes"]];
0 голосов
/ 21 декабря 2011

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

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

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

...