美文网首页
iOS 基于AFNetWorking的联想搜索的实现

iOS 基于AFNetWorking的联想搜索的实现

作者: 几岂 | 来源:发表于2017-10-17 22:32 被阅读0次

    需求描述:

    输入框搜索功能,输入小米,键盘输入按照x-i-a-o-m-i的顺序,而请求是根据输入框内容的变化进行请求,输入框每变化一次就要进行一次请求,直到输入停止,请求的结果列表展示。

    关键点:频繁的网络请求,又不能影响下次请求的进行,这就要求当新的请求开始前,1.展示上次请求的结果;2.就是请求还未返回那就直接取消请求直接进行下次请求.

    直接上代码,在封装的网络请求工具里,AFHTTPSessionManager在工具类初始化的时候创建,当前任务@property (nonatomic, strong)NSURLSessionDataTask *currentTask;

    [_currentTask cancel];为取消当前任务
    [_currentManager.operationQueue cancelAllOperations];取消所有任务

    - (void)frequentlyPOST:(NSString *)URLString
                parameters:(id)parameters
                   success:(void (^)(NSURLSessionDataTask *task, id responseObject))success
                   failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure
                 hudOnView:(UIView *)onView
    {
        if (_currentTask) {
            [_currentTask cancel];
            [_currentManager.operationQueue cancelAllOperations];
            [ProgressHUDUtil hideHUD:onView];
        }
        [ProgressHUDUtil showLoadingWithView:onView];
    
        _currentTask = [_currentManager POST:Append2Str(API_Base, URLString) parameters:parameters progress:^(NSProgress * _Nonnull uploadProgress) {
            
        } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
            NSString *result =[[ NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
            [ProgressHUDUtil hideHUD:onView];
            success(task,result);
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
            failure(task,error);
        }];
    
    }
    
    

    相关文章

      网友评论

          本文标题:iOS 基于AFNetWorking的联想搜索的实现

          本文链接:https://www.haomeiwen.com/subject/bypjuxtx.html