// // Api.m // xplan-ios // // Created by zu on 2021/9/6. // #import "Api.h" @implementation Api + (void)makeRequest:(NSString *)route method:(HttpRequestHelperMethod)method completion:(HttpRequestHelperCompletion)completion, ... { va_list arg_lists; va_start(arg_lists, completion); // 获取第一个参数 __FUNCTION__ ,然后解析出来 key 。 const char *functionName = va_arg(arg_lists, const char *); NSString *fn = [[NSString alloc] initWithUTF8String:functionName]; // NSLog 一下 __FUNCTION__ 就知道为什么这么截取了。 NSRange blankRange = [fn rangeOfString:@":"]; NSUInteger start = blankRange.location + 1; NSUInteger length = fn.length - start - 2; NSString *fromatParamKeys = [fn substringWithRange:NSMakeRange(start, length)]; // 构造请求的 NSMutableDictionary *params 。 NSMutableDictionary *params = [NSMutableDictionary dictionary]; NSArray *paramKeys = [fromatParamKeys componentsSeparatedByString:@":"]; NSEnumerator *enumerator = [paramKeys objectEnumerator]; NSString *value = nil; while((value = va_arg(arg_lists, NSString*))){ [params setValue:value forKey:enumerator.nextObject]; }; va_end(arg_lists); [HttpRequestHelper request:route method:method params:params completion:completion]; } @end