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

看招

第一名 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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,598评论 18 399
  • 二、数学运算(math)函数2.1算术运算函数2.1.1rand()函数:产生随机数2.1.2abs()函数/la...
    问题饿阅读 3,466评论 1 11
  • 下辈子,请别再相遇,因为我怕遇见太晚,就如今生一样错过了流年,把你我的缘分斩断,让你我的眼泪泛滥。 下辈子,请别再...
    东说微言阅读 2,805评论 1 1
  • 宝莱坞的大剧一言不合就载歌载舞,在新上映的《摔跤吧!爸爸》中,阿米尔汗少了年轻时期的机灵幽默,毕竟年纪也52,反而...
    黑黑白糖阅读 333评论 0 2
  • 文/楚云乔 初秋的风清清凉,拂过面颊,绕过耳畔,旋起几丝乌发,随它自在悠扬的飘摇在肩头。 梧桐落下的第一片叶子,一...
    凶猛三七阅读 460评论 0 2