我有Textfield USERNAME。在這裏,當用戶開始輸入時,對於每個字母,我必須打到服務器以檢查「用戶名可用性」。現在我把它稱爲前景,所以它卡住了一點點。我無法取消或刷新以前的連接。任何想法 ?如何使用AFNetwork刷新或取消服務器調用(GET/POST)?
注意:我正在使用AFNetwork sessionManager。
我有Textfield USERNAME。在這裏,當用戶開始輸入時,對於每個字母,我必須打到服務器以檢查「用戶名可用性」。現在我把它稱爲前景,所以它卡住了一點點。我無法取消或刷新以前的連接。任何想法 ?如何使用AFNetwork刷新或取消服務器調用(GET/POST)?
注意:我正在使用AFNetwork sessionManager。
如果您正在使用如下的AFNetworking:
AFHTTPSessionManager *sessionManager = [AFHTTPSessionManager manager];
NSURLSessionDataTask *task = [sessionManager GET:@"http://example.com/resources.json" parameters:nil success:^(NSURLSessionTask *task, id responseObject) {
NSLog(@"JSON: %@", responseObject);
} failure:^(NSURLSessionTask *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
可以使用
[task cancel];
,如果你正在使用AFNetworking如下:
AFHTTPRequestOperationManager *operationManager=[AFHTTPRequestOperationManager manager];
requestOperation=[operationManager GET:@"" parameters:nil success:^(AFHTTPRequestOperation * _Nonnull operation, id _Nonnull responseObject) {
} failure:^(AFHTTPRequestOperation * _Nullable operation, NSError * _Nonnull error) {
}];
可以使用
[requestOperation cancel];
您的方法很好。但在這裏我建議一些新的方法。當你打算打字那時候每個角色爲什麼要調用web服務並增加負載。請檢查以下建議。
如果您要檢查用戶名,您應該在至少寫3個字母后調用api。因爲只有在那之後,任何單詞都可以用作用戶名,否則這些是字符。這完全取決於您正在實施的功能要求。
只是等到用戶停止輸入,然後才調用web服務。在用戶正在連續輸入(直到持續一段時間)之前,取消先前的請求,使用下面的代碼調用Web服務。
[NSObject cancelPerformSelectorsWithTarget:self]; [self performSelector:@selector(sendSearchRequest) withObject:searchText afterDelay:0.1f];
我用這個[operationQueue.sessionmanager取消]。這是正確的嗎?這是不行的。您可以請發送示例代碼。 –