网络请求回调的小思考

#pragma mark - PTVNetworkDelegate

- (void)response:(NetworkResultState *)result {
    NSString *errNo = [NSString stringWithFormat:@"%@", result.data[@"errno"]];
    NSString *errMessage = [NSString stringWithFormat:@"%@", result.data[@"errmsg"]];
    
    if (IS_STRING_NULL(errMessage)) {
        errMessage = getOrderFailMessage;
    }
    
    if ([result.taskName isEqualToString:requestCreateOrderKey]) {
        if (IS_STRING_NULL(errMessage) || [errMessage isEqualToString:@"(null)"]) {
            errMessage = getOrderFailMessage;
        }
        
        if (result.errCode == 0 && [errNo isEqualToString:@"0"]) {
            self.orderId = [NSString stringWithFormat:@"%@", result.data[@"data"][@"order_id"]];

            if (IS_STRING_NULL(self.orderId)) {
                if (self.rechargeCompleteBlock) {
                    self.rechargeCompleteBlock(NO, errMessage);
                    [self compeletePayCatMoney];
                }
            } else {
                [self requestProductData];
            }
        } else {
            if (self.rechargeCompleteBlock) {
                self.rechargeCompleteBlock(NO, errMessage);
                [self compeletePayCatMoney];
            }
        }
    } else if ([result.taskName isEqualToString:requestVerifyReceiptKey]) {

这是网络请求的回调。因为项目中封装了AFNetWorking 每次请求都和一个key对应起来。如果每个模块的网络请求特别多。这里if else 会有几十个,也就是几百行,即使每个if else 单独封装成函数,也有几十个if else..

可以利用字典,保存好key 和 SEL ,然后回调回来直接调用。类似:

NSMutableDictionary *dic = @{}.mutableCopy;
    dic[@"request1"] = NSStringFromSelector(@selector(requestProductData));

////网络请求回来就可以调用:
    [self performSelector:NSSelectorFromString(dic[@"request1"]) withObject:nil afterDelay:0];

也便便扩展。

问题,dic值多了,内容占用也大,所以,使用不频繁的,从dic中删除掉

你可能感兴趣的:(网络请求回调的小思考)