利剑出鞘—详点iOS数据处理

作者: ChiCoChiCo | 来源:发表于2016-08-07 08:09 被阅读528次
看招

第一名 NSString IOS开发中的大部分文本数据都用他处理,可以说他无处不在,无时不有[项目为单位]下面我们来看看我们常用的招式

• 字符串替换 stringByReplacingOccurrencesOfString (比如在展示数据的时候,将空格换成\n,将br换成\n)

• 字符串转数组 componentsSeparatedByString(比如用空格 逗号来分割一个字符串),顺便提一下数组回转字符串 componentsJoinedByString,回转的时候还可设置链接的字符串

• 字符串的比较,这个老普遍了,例如将一个字符串和@""比较来判断他是不是为空,在这里需要注意的是,如果第一个比较的对象为NSNull活着不是字符串类型,程序会崩掉,需要仔细斟酌。

• 字符串转数字 intValue integerValue floatValue,这里要着重强调的是floatValue,这种转换并不会精确,而且不好用,比如小数位为0就不要那位,这是我们需要用到IOS专门的数值处理类 —— NSDecimalNumber

NSString *str = @"张三,李四,王五";
//1.字符串替换
str = [str stringByReplacingOccurrencesOfString:@"," withString:@"\n"];
//字符串转数组
NSArray *nameArr = [str componentsSeparatedByString:@"\n"];
//数组在变回字符串
str = [nameArr componentsJoinedByString:@" "];
//字符串的比较
//需要注意 在json解析的时候 str 是不是NSNull
if ([@"" isEqualToString:str])
{
  NSLog(@"");
}
    
//字符串转数字 但是不能精确,精确的需要使用NSNumber
NSString *money = @"199.80";
float fmoney = [money floatValue];
NSLog(@"fmoney : %f",fmoney);

第二名 NSDecimalNumber 价格处理的最好工具,苹果实在是太好了。随着电商的迅猛发展,app中价格处理自然是少不了的

• 字符串初始化number initWithString:

• 格式化价格,可以去掉小数点后面的0

• 数值计算: decimalNumberByAdding decimalNumberBySubtracting decimalNumberByMultiplyingBy decimalNumberByDividingBy 功能 + - X ÷

NSString *money = @"199.80";
NSDecimalNumber *firstMoney = [[NSDecimalNumber alloc] initWithString:money];
    
//输出的是 money: 199.8
NSLog(@"money : %@",[firstMoney stringValue]);
    
NSDecimalNumber *secondMoey = [[NSDecimalNumber alloc] initWithString:@"211"];
NSDecimalNumber *total = [firstMoney decimalNumberByAdding:secondMoey];
//输出的是 total :410.8
NSLog(@"total :%@",[total stringValue]);

第三名 NSArray NSMutableArray

• 排序 sortedArrayUsingDescriptors: 结合NSSortDescriptor 来对数组进行排序 [常见的有姓名按照拼音排序,日期排序]

• 查找元素 filteredArrayUsingPredicate:结合NSPredicate 查找数组中的元素,可以模糊和精确查找,只要设置好查找规则就好[常用于筛选数据,比如查找姓名中同姓的人,还有做单选的时候可以筛选出选择过的数据]

• 让里边的元素执行相同的方法 makeObjectsPerformSelector [常用于移除子视图,单选 多选 全选 改变一组选中按钮的状态]

• 移除 替换 增加 数组中的元素 removeObjectsInArray removeObjectsInRange replaceObjectAtIndex

下面给出示意代码

//排序
NSArray <NSString *>*dateArr = @[@"2015-08-06",
                         @"2014-05-09",
                         @"2016-02-03",
                         @"2011-04-23"];
NSSortDescriptor *descriptor  = [NSSortDescriptor sortDescriptorWithKey:nil ascending:YES];
NSArray *resultArr = [dateArr sortedArrayUsingDescriptors:@[descriptor]];
 NSLog(@"resultArr : %@",resultArr);
    
//查找
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF = '2015-08-06'"];
 resultArr = [dateArr filteredArrayUsingPredicate:predicate];
    NSLog(@"%@",resultArr);
    
//让里边的元素执行相同的方法
NSArray <UIView *>*subViews;
  [subViews makeObjectsPerformSelector:@selector(removeFromSuperview)];
    
//移除和替换元素
NSMutableArray *mutArr = [NSMutableArray array];
//移除单个元素
[mutArr removeObject:[mutArr firstObject]];
//移除一组数据:比如arr 是mutArr的一组数据
NSArray *arr;
[mutArr removeObjectsInArray:arr];
//通过下标移除数据 移除第5个后的5个数据
[mutArr removeObjectsInRange:NSMakeRange(4, 5)];
//替换摸个元素 比如将@"" 换到第一的位置上
NSString *str = @"";
[mutArr replaceObjectAtIndex:0 withObject:str];

第四名 NSDictory NSMutableDictory

• 常用方法 setObject:forKey: removeObjectForKey: initWithObjectsAndKeys 常用于向服务器提交参数时构造提交参数

• 特别注意: initWithObjectsAndKeys --》 这个方法中如果有一个键值对的object为nil的话,字典只会初始化到这一项前面的数据,后面的不会执行,然后你提交到服务器的参数就不完整了,这是都么危险和尴尬的事情啊

最后在提供一个输出必用小技巧

#ifndef __OPTIMIZE__
//调试模式
#define NSLog(xxx, ...)
 NSLog((@"%s [第%d行]: " xxx), __FUNCTION__, __LINE__, ##__VA_ARGS__)

#else
//打包模式
#define NSLog(...){}
#endif

相关文章

  • 利剑出鞘—详点iOS数据处理

    第一名 NSString IOS开发中的大部分文本数据都用他处理,可以说他无处不在,无时不有[项目为单位]下面我们...

  • 利剑出鞘

    磕磕绊绊总黏连, 静静悄悄鬓发白。 愚公移山铸一剑, 妖魔鬼怪任其斩。

  • 利剑出鞘

    如果不是那把锋利的剑刺来,我想我也不会明白,有时候苟且都是奢侈。 银白色的剑身上流转着凌厉的气流,这是武林高手的象...

  • 利剑出鞘

    往往两个人的关系出现不信任,是由一些小事引发堆积出来的,特别是在与朋友的合作在出现风险时便会显露出人性里平...

  • 8.31

    利剑出鞘 我今天就在找我的力量去哪了,利剑出鞘我觉得就是一种力量

  • 利剑出鞘,以期未来

    怀梦想,致远方,今天的你是无可匹及的英雄。 战无不胜,攻无不克。今天的你是勇往直前的战士。 运筹帷幄,决胜千里。今...

  • 2020-12-14

    利刃出鞘,划骨忧伤! 利剑出击,断世无痕!

  • 【战地日记】十七 利剑出鞘

    谨以此文献给为人民空军建立奋斗的老一辈们 1958/8/4 晴 罗裳山 早晨天刚一亮,大家吃过早饭就匆匆赶到指挥所...

  • 利剑出鞘-鸡血视频

    一路成长,我们一路挫折连连;一路奔跑,我们一路磕磕绊绊;曾几何时,我们一度踌躇彷徨;曾几何时,我们一度几近放弃。 ...

  • 🌞秋日晨阳

    如利剑出鞘划破深秋的晓即使于天空的一角也要将世界紧紧拥抱

网友评论

    本文标题:利剑出鞘—详点iOS数据处理

    本文链接:https://www.haomeiwen.com/subject/pmclsttx.html