博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS开发-Foundation笔记
阅读量:6149 次
发布时间:2019-06-21

本文共 9814 字,大约阅读时间需要 32 分钟。

hot3.png

NSString,NSMutableString中常用的方法使用

#pragma makr - NSString的常用方法:/** 字符串创建: */NSString *str0             = @"This is a string";NSString *str1             = [[NSString alloc]init];    //创建一个空字符串,无实际意义,一般不用NSString *str2             = [NSString stringWithFormat:@"%d",18];    //格式化创建/** 字符串拼接: */NSString *str3             = @"This is ";NSString *str4             = @"a string";NSString *str5             = [str3 stringByAppendingString:str4];    //追加拼接NSString *str6             = [str3 stringByAppendingFormat:@"%@,%d",str4,222];    //追加拼接特殊情况NSString *str7             = [[NSString alloc]initWithFormat:@"%@%@",str3,str4];  //初始化拼接/** 字符串截取: */NSString *str8             = [str0 substringToIndex:4];    //输出字符串str4中的头部字符,截取到~为止NSString *str9             = [str0 substringFromIndex:10];    //输出字符串的尾部字符,从~开始截取NSRange r                  = {5,5};    //截取字符串中间的值,第4个字符开始,5表示子字符串的长度,从4开始截取,长度为5NSString *str10            = [str0 substringWithRange:r];//截取字符串中间的值/** 字符串替换: */NSString *str11            = @"www.baidu.com";NSRange r1                 = {4,5};NSString *str12            = [str11 stringByReplacingCharactersInRange:r1 withString:@"google"];//并不会改变原有的值,而是生成一个新的字符串/** 字符串编码: */NSString *str13            = [NSString stringWithContentsOfFile:@“此处为保存了字符串的目标文件地址” encoding:NSUTF8StringEncoding error:nil];//将一个文件类的字符串拷贝到str13里面#pragma makr - NSMutableString常用方法:/** 创建可变字符串 */NSMutableString *str1      = [[NSMutableString alloc]init];//创建了一个空的可变字符串,有实际意义//NSMutableString *str2 = @"This is a string";                            //可变字符串不能直接赋值,会退化成字符串常量,NSMutableString *str3      = [NSMutableString stringWithString:@"sting"];//创建一个可变字符串并赋初值(标准方法)NSMutableString *str4      = [NSMutableString stringWithFormat:@"%d",23];//标准格式方法,将数字直接创建成字符串形式NSMutableString *str5      = [NSMutableString stringWithCapacity:100];//创建一个空字符串,并预留一定字节的空间/** 添加字符 */[str5 appendString:@"string "];NSLog(@"str5:%@",str5);[str5 appendFormat:@"has %d characters",5];                             //可变字符串中,添加后在原有字符串上添加NSLog(@"str5:%@",str5);                                                 //输出结果为:str5:string has 5 characters;/** 字符串删除: */NSRange r                  = [str5 rangeOfString:@"has"];//将has开始的字符删除,长度为has的长度NSLog(@"(%lu,%lu)",(unsigned long)r.location,(unsigned long)r.length);  //注意!!!!!!!!!!!强制转化字符串类型[str5 deleteCharactersInRange:r];NSLog(@"str5:%@",str5);                                                 //输出结果为:str5:string  5 characters;/** 字符串替换 */NSMutableString *str6      = [NSMutableString stringWithString:@"This is a string"];NSRange r1                 = [str6 rangeOfString:@"a"];[str6 replaceCharactersInRange:r1 withString:@"another"];NSLog(@"str6:%@",str6);

NSNumber

定义: 用于封装C语言的基本数据类型成为一个OC的类的对象

/** 封装 */int i                      = 10;NSNumber *num0             = [NSNumber numberWithInt: i ];NSNumber *num1             = @3;//封装简写NSNumber *num2             = [NSNumber numberWithInt:10];//封装的时候可以直接简写/** 拆封 */int i2                     = [num intValue];//得到拆封后的值NSLog(@"i2:%d",i2);NSLog(@"i2:%d",[num intValue]);//拆封的时候也可以简写//char,float,double,BOOL类型的封装与拆封方法同理

NSValue

定义: 创建一个对象来密切反应原始数据类型或者数据结构,可以将任何C中有效的变量类型封装成对象类型;

NSNumber是NSValue的子类

typedef struct _point{    int x ;    int y ;} TRPoint;int main(int argc, const char * argv[]) {    @autoreleasepool {        /** 封装 */TRPoint p       = {3,4};//开辟一个结构体内存空间,并赋值NSValue *value  = [NSValue valueWithBytes:&p objCType:@encode(TRPoint)];//@encode(TRPoint)与@selector相类似        /** 拆封 */        TRPoint p2;//开辟一个新的结构体内存空间        [value getValue:&p2];//将堆中的数据放到栈中        NSLog(@"p2中x值为:%d ,y值为:%d ",p2.x,p2.y);    }    return 0;}

NSDate

定义: 用于处理日期和时间,默认储存的时世界标准时间(UTC),与中国时间相差为+8.

使用方法:

//获取世界标准时间:NSDate *date               = [NSDate date];//此处需要注意是date(时间),而不是data(数据);NSLog(@"%@", date);//获取本地时间:NSTimeZone *zone           = [NSTimeZone systemTimeZone];NSInteger interval         = [zone secondsFromGMTForDate:date];NSDate *localDate          = [date dateByAddingTimeInterval:interval];NSLog(@"%@", localDate);//获取比当前时间快30秒的世界标准时间:			//关键字:interval:间隔NSDate *date2              = [NSDate dateWithTimeIntervalSinceNow:30];//正数表示在此时间之后(延迟多少秒,比当前时间快多少秒);NSLog(@"%@", date2);//获取自1970年1月1日0时到现在的总秒数NSTimeInterval seconds     = [date timeIntervalSince1970];NSLog(@"%lf", seconds);//获取指定时间到现在的总秒数NSDate *time               = [NSDate dateWithTimeIntervalSinceNow:-60];//负数表示在此时间之前;NSTimeInterval seconds1    = [time timeIntervalSinceNow];NSLog(@"%lf", seconds1);//获取两个指定时间之间的总秒数NSDate *time1              = [NSDate dateWithTimeIntervalSinceNow:-60 * 60 * 24];//定义time1在此时间之前NSDate *time2              = [NSDate dateWithTimeIntervalSinceNow:60 * 60 * 24];//定义time2在此时间之后NSTimeInterval seconds2    = [time1 timeIntervalSinceDate:time2];NSLog(@"%lf", seconds2);//对比两个时间谁更早NSDate *earlierDate        = [time1 earlierDate:time2];NSLog(@"%@", earlierDate);//earlier:更早得//谁更晚NSDate *laterDate          = [time1 laterDate:time2];NSLog(@"%@", laterDate);//later:晚一点的,迟一点的//对比两个时间是否相同if ([time1 isEqualToDate:time2] == YES){    NSLog(@"两个时间相同");}else{    NSLog(@"两个时间不同");}//指定时间的输出格式NSDateFormatter *formatter = [[NSDateFormatter alloc] init];//formatter: 样式,格式, 定义一个空的时间模板(时间格式的对象);formatter.dateFormat       = @"yyyy年MM月dd日 hh:mm:ss”;//自定义定义格式: hh:12小时制,HH:24小时制NSString *strDate          = [formatter stringFromDate:date];NSLog(@"%@", strDate);

NSArray

定义: 数组是一组有序的集合,痛过索引下标取到数组中的各个元素,同样分为不可变数组(NSArray)与可变数组(NSMutableArray);

不能直接存放C语言的基本数据类型和结构体类型的变量,需要用NSNumber和NSValue进行数据封装和拆封;

使用方法:

//数组的创建:NSArray *array1            = [NSArray array];//创建一个空数组,没有实际意义NSArray *array2            = [NSArray arrayWithObject:@"one"];//创建一个只有一个元素的数组,意义也不大;NSArray *array3            = [NSArray arrayWithObjects:@"one", @"two", @"three", nil];//创建一个有多个元素的数组,并以nil结束;NSArray *array4            = @[@"one", @"two", @"three"];//简化后的创建一个有多个元素的数组NSArray *array5            = [NSArray arrayWithArray:array4];//创建数组array4的副本//求数组的长度(数组中的元素个数):NSUInteger length          = [array5 count];//length:长度NSLog(@"%lu", length);//通过下标,获取数组中的指定元素:NSString *objStr           = [array5 objectAtIndex:0];//使用实例方法的方式objStr                     = array5[1];//使用下标的方式NSLog(@"%@", objStr);//求取数组的最后一个元素objStr                     = [array5 lastObject];NSLog(@"%@", objStr);//求取数组的第一个元素objStr                     = [array5 firstObject];NSLog(@"%@", objStr);//求一个数组元素在数组中的下标NSUInteger index           = [array5 indexOfObject:@"two"];NSLog(@"%lu", index);index                      = [array5 indexOfObject:@"5"];//当元素不是数组中的元素时,得到的下标是垃圾值NSLog(@"%lu", index);#pragma makr -数组的遍历://第一种遍历for (int i                 = 0; i<[sArray count]; i++){TRStudent *obj             = [sArray objectAtIndex:i];    NSLog(@"%@,%d",obj.name,obj.age);}//第二种遍历for (TRStudent*obj in sArray)  	//数组特有的遍历{    NSLog(@"%@,%d",obj.name,obj.age);}//第三种NSEnumerator *enu          = [sArray objectEnumerator];//首先得到该容器的迭代器TRStudent *stu             = nil;while (stu                 = [enu nextObject]){    NSLog(@"%@,%d",stu.name,stu.age);}#pragma makr -数组的排序://利用系统自带的compare对数组进行排序NSArray *sortedArray       = [array sortedArrayUsingSelector:@selector(compare:)];NSLog(@"%@",sortedArray);		//当自定义的数组array中全为int类型的时候,按照从整数从大到小顺序排列;//当array中既有int类型,又由char类型时,排序时,将字符类型的首字母的ASSIC值转换然后进行排序;NSArray *string            = [NSArray arrayWithObjects:@"one",@"four",@"100",@"three”,nil];                   NSLog(@"比较前:%@",string);			//当自定义的数组string中为字符类型时候,按照每个成员的首字母进行排序,如果出现数字,则数字排最前面NSArray *string1           = [string sortedArrayUsingSelector:@selector(compare:)];                   NSLog(@"比较后:%@",string1);		//所以该句输出结果为:100,four,one,three;//自定义比较类容//声明部分:-(NSComparisonResult)compareName:(TRStudent*)other;    //固定格式,第一个下划线部分为比较内容,首字母大写;-(NSComparisonResult)compareAge:(TRStudent*)other;			//compare:比较,result:结果,返回一个比较结果;方法部分:-(NSComparisonResult)compareName:(TRStudent *)other{    return [self.name compare:other.name];		//当字符串进行比较时,返回值为:字符串的首字母的排列方式,a到z依次排列;}-(NSComparisonResult)compareAge:(TRStudent *)other{      if (self.age
other.age)          return NSOrderedDescending;       else          return NSOrderedSame;}#pragma makr -数组的引用计数复制,和深拷贝复制:NSArray *copiedStudent     = [[NSArray alloc]initWithArray:stu copyItems:NO];//当第二个参数值为NO时,数组中的所有元素仅将引用计数加了一个1NSArray *copiedStudent1    = [[NSArray alloc]initWithArray:stu10 copyItems:YES];//当第二个参数值为YES时,为深拷贝,即数组copiedStudent中的所有元素与数组stu中的所有元素各占各的存储空间,//当实现深拷贝的时候,必须遵守拷贝协议,重写-(id)copyWithZone:(NSZone *)zone方法;NSMutableArray//创建NSMutableArray *array      = [NSMutableArray array];//创建一个空的可变数组,有意义的,在后续程序中,可以向其中添加元素NSMutableArray *array1     = [NSMutableArray arrayWithCapacity:18];//创建一个预估空间的集合,目的是加快运行速度;NSMutableArray *array2     = [NSMutableArray arrayWithObjects:@"one", @"two", @"three", nil];//标准方法//向可变数组中添加元素[array addObject:@"one"]; //在数组的末尾添加一个元素[array insertObject:@"four" atIndex:1];[array insertObject:@"five" atIndex:4]; //下标越界会导致崩溃//修改数组元素[array replaceObjectAtIndex:0 withObject:@"aaa"]; //修改指定下标的数组元素,仅修改一个元素NSMutableArray *replace    = [NSMutableArray arrayWithObjects:@"six", @"seven", @"eight", nil];NSRange r                  = {1, 2};//范围中1为开始的下标,2为连续的元素个数[array replaceObjectsInRange:r withObjectsFromArray:replace]; //修改指定范围的数组元素,对多个数组元素进行修改//删除数组元素NSMutableArray *array4     = [NSMutableArray arrayWithObjects:@"one", @"two", @"three", nil];[array4 removeLastObject]; //删除最后一个元素[array4 removeObject:@"two"]; //删除指定对象,当删除不存在的对象时,什么情况都不会发生[array4 removeObjectAtIndex:0]; //删除指定下标的数组元素,当下标不存在时,程序会崩溃NSMutableArray *array5     = [NSMutableArray arrayWithObjects:@"one", @"two", @"three", @"four", nil];NSRange r1                 = {1, 2};//1为要删除的数组元素开始的下标,2为从开始下标的连续2个元素[array5 removeObjectsInRange:r1]; //删除指定范围的元素NSMutableArray *del        = [NSMutableArray arrayWithObjects:@"two", @"four", nil];[array5 removeObjectsInArray:del]; //删除指定数组中的所有元素,删除多个元素[array5 removeAllObjects]; //删除数组中的所有元素,即清空数组;

转载于:https://my.oschina.net/CeeYang/blog/609655

你可能感兴趣的文章
Java并发编程73道面试题及答案
查看>>
企业级负载平衡简介(转)
查看>>
ICCV2017 论文浏览记录
查看>>
科技巨头的交通争夺战
查看>>
当中兴安卓手机遇上农行音频通用K宝 -- 卡在“正在通讯”,一直加载中
查看>>
Shell基础之-正则表达式
查看>>
JavaScript异步之Generator、async、await
查看>>
讲讲吸顶效果与react-sticky
查看>>
c++面向对象的一些问题1 0
查看>>
直播视频流技术名词
查看>>
IOC —— AOP
查看>>
比特币现金将出新招,推动比特币现金使用
查看>>
数据库的这些性能优化,你做了吗?
查看>>
某大型网站迁移总结(完结)
查看>>
部署SSL证书后,网页内容造成页面错误提示的处理办法
查看>>
MS SQLSERVER通用存储过程分页
查看>>
60.使用Azure AI 自定义视觉服务实现物品识别Demo
查看>>
Oracle 冷备份
查看>>
jq漂亮实用的select,select选中后,显示对应内容
查看>>
C 函数sscanf()的用法
查看>>