程序员

关于处理服务器返回的垃圾数据的一个细节

2016-05-05  本文已影响80人  ali_vera

描述:假设要求数据最多保留两位小数,如果以上条件成立,还要求此数据最后一位小数上如果是0的话,就舍掉最后一位上的0。

比如:89.90000000000001->89.90->89.9。
分析:一般可以创建一个新的字符串工具类,继承NSString,可是这样的话就多了一个类。 另一种方法:给NSString添加一个分类。

NSString+Extension.m

@implementation NSString (Extension)
- (instancetype)dealedPriceString {

// 处理过的字符串
NSString *newString = self;
// 小数点的位置
NSUInteger dotLoc = [newString rangeOfString:@"."].location;
if (dotLoc != NSNotFound) {
    // 小数位数
    NSUInteger decimalCount = newString.length - dotLoc - 1;
    // 小数位数过多
    if (decimalCount > 2) {
        // 89.90000000000001 -> 89.90
        newString = [newString substringToIndex:dotLoc + 3];
        if ([newString hasSuffix:@"0"]) {
        //89.90-> 89.9
            newString = [newString substringToIndex:newString.length - 1];
        }
    }
}
return newString;

} @end
使用场景 : 最好在重写模型属性(此属性的成员变量里放的是将来处理好的要显示的最终数据)的set方法时,让需要处理的字符串对象调用此方法,比如:
- (void)setCurrent_price:(NSString *)current_price { _current_price = current_price.dealedPriceString; }
PS

总结

依据分类这一思想:如果一个类中有很多实现功能的方法,那么可以将每一个功能方法单独写成分类,让具体的分类来管理具体的功能!这样的话如果其他类要实现同样功能就可以直接调用分类。
在实际开发中一般不建议给自定义的类写分类,一般情况下都是为系统自带的类写分类 。

上一篇下一篇

猜你喜欢

热点阅读