内容简介:也曾考虑过在封装的代码中通过
+ (NSString *)getGoodsRuleWithCarLength:(NSString *)carLength andCarType:(NSString *)carType andSpecialRequire:(NSString *)specialRequire andEntrance:(TYTGoodsRuleEntrance)entrance{
NSString *goodsRule = nil;
if(carLength.length > 0){
if(carType.length > 0){
if(specialRequire.length > 0){
goodsRule = [NSString stringWithFormat:@"%@/%@/%@",carLength,carType,specialRequire];
}else{
goodsRule = [NSString stringWithFormat:@"%@/%@",carLength,carType];
}
}else{
if(specialRequire.length > 0){
goodsRule = [NSString stringWithFormat:@"%@/%@",carLength,specialRequire];
}else{
goodsRule = [NSString stringWithFormat:@"%@",carLength];
}
}
}else{
if(carType.length > 0){
if(specialRequire.length > 0){
goodsRule = [NSString stringWithFormat:@"%@/%@",carType,specialRequire];
}else{
goodsRule = [NSString stringWithFormat:@"%@",carType];
}
}else{
if(specialRequire.length > 0){
goodsRule = [NSString stringWithFormat:@"%@",specialRequire];
}else{
goodsRule = @"";
}
}
}
return goodsRule;
}
复制代码
二、可变参数的方式
//创建NSString的分类
/**
* 用斜线拼接参数
* count为参数个数,其它参数必须是NSString类型(可为nil)
* eg.需要拼接三个字符串 长、宽、高为 "长/宽/高" 方法调用方式为[NSString splicWithSlantParamsCount:3, @"长", @"宽", @"高"];
*/
+ (NSString *)stringSplicWithSlantParamsCount:(int)count,...{
if(count < 1){
return @"";
}
int index = 0;
va_list args;
va_start(args, count);
//拼接后的字符串
NSString *paramSum = @"";
NSString *otherParam;
//循环到结尾就停止循环
while(index<count){
index ++;
otherParam = va_arg(args, NSString *);
if(paramSum.length > 0){
if(otherParam.length > 0){
paramSum = [NSString stringWithFormat:@"%@/%@",paramSum,otherParam];
}
}else{
if(otherParam.length > 0){
paramSum = otherParam;
}
}
}
va_end(args);
return paramSum;
}
复制代码
+ (NSString *)getGoodsRuleWithCarLength:(NSString *)carLength andCarType:(NSString *)carType andSpecialRequire:(NSString *)specialRequire andEntrance:(TYTGoodsRuleEntrance)entrance{
//用"/"拼接字符串
NSString *goodsRule = [NSString stringSplicWithSlantParamsCount:3, carLength, carType, specialRequire];
return goodsRule;
}
复制代码
很明显,第二中方法扩展性更好,逼格更好
也曾考虑过在封装的代码中通过 vsnprintf
计算可变参数的长度,但是参数有可能为空,就会导致崩溃,所以最后决定直接传进来参数的个数
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- C 可变长参数 VS C++11 可变长模板
- 基于C++可变参数模板格式化字符串
- 当心Python函数可变默认参数(list,set,dict…)的陷阱
- 集合对象可变与不可变的那点事
- Python中不可变数据类型和可变数据类型
- 可变剪切分析
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Responsive Web Design
Ethan Marcotte / Happy Cog / 2011-6 / USD 18.00
From mobile browsers to netbooks and tablets, users are visiting your sites from an increasing array of devices and browsers. Are your designs ready? Learn how to think beyond the desktop and craft be......一起来看看 《Responsive Web Design》 这本书的介绍吧!