小技巧《二》

场景:项目中总会有需要判断字符串是否合法的需求
1、常规情况下一大部分公司都是这么写的。【假设这是分类】

- (BOOL)isString {
    return [self isKindOfClass:[NSString class]];
}

- (BOOL)isValidString {
    return [self isString] && ((NSString *)self).length > 0;
}

2、看起来人畜无害,其实暗藏着不合理的地方?
3、如果调用方,明知道方法参数应该传递NSString类型而给了另外一个类型。则可能造成下边所说的情况。

解决方案:判断是不是有效的字符串【排除空字符串】《如果已经是字符串了,则没必要在次强转类型,因为&&是短路元算符号,前边条件为NO则直接返回结果》
之所以还需要判断length,是因为服务器返回的有可能是一个空字符串,我们在这里的需求时判断一个合法有效的字符串类型

+ (BOOL)p_isValidString:(NSString *)vaildStr {
    return [vaildStr isKindOfClass:[NSString class]] && ((NSString *)self).length > 0;
}

调用:类方法的内部使用self为本身类类型,不能一会写类名一会写self,这个要看每个公司具体的规范而定

+ (BOOL)fileExistsAtAbsolutePath:(NSString *):path {
       NSParameterAssert([self p_isVaildString:path]);
       return [[NSFileManager defaultManager] fileExistAtPath:path];
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值