+ (NSDictionary *)func:(NSString *)firstArg, ... {
firstArg = [firstArg stringByReplacingOccurrencesOfString:@" " withString:@""];
NSArray *keys = [firstArg componentsSeparatedByString:@","];
NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithCapacity:keys.count];
va_list list;
if (firstArg) {
va_start(list, firstArg);
id arg;
for (NSString *key in keys) {
arg = va_arg(list, id);
if (!arg || [arg isKindOfClass:[NSNull class]]) {
continue;
}
if ([arg isKindOfClass:[NSString class]]) {
if ([[arg stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] != 0) {
[dic setObject:arg forKey:key];
}
} else {
[dic setObject:arg forKey:key];
}
}
va_end(list);
}
return dic;
}
其中几个函数需要注意:va_start va_arg va_end
va_start :获取可变参数列表的第一个参数地址
va_arg:获取可变参数当前参数
va_end:清空可变参数列表
需要判断获取当前参数是否为空,为空则继续获取。
参考资料: