02-Foundation-NSMutableString、NSNumber、NSValue、NSDate、NSArray

目录:

一、NSMutableString可变字符串

二、NSNumber数字对象

三、NSValue

四、NSDate日期对象

五、NSArray数组对象

回到顶部

一、NSMutableString可变字符串

常用的操作就是crud增删改查

1 NSString只能做增查cr操作

2 NSMutableString可以做改删ud操作

3 可以改变字符串内容的功能,是NSString的子类

4 可变字符串的操作

 1 //1 字符串的初始化stringWithString
 2 
 3 NSMutableString* str3 = [NSMutableString stringWithString:@"abc"];
 4 
 5 NSLog(@"str3:%@",str3);       
 6 
 7 //2 修改字符串的内容
 8 
 9 //在指定位置添加新的字符串insertString
10 
11 [str3 insertString:@"123" atIndex:1];//在1下标这个位置插入123
12 
13 NSLog(@"str3:%@",str3);//a123bc
14 
15 //替换指定位置的字符串
16 
17 NSRange range = {1,3};//1代表修改位置 3代表修改长度
18 
19 [str3 replaceCharactersInRange:range withString:@"abc"];
20 
21 NSLog(@"str3:%@",str3);//aabcbc
22 
23         //删除指定位置的字符串,后面的字符串会向前补齐
24 
25         [str3 deleteCharactersInRange:range];
26 
27         NSLog(@"str3:%@",str3);//abc
28 
29        
30 
31         //3 两个字符串对象的操作
32 
33         //追加一个字符串
34 
35         NSMutableString* str4 = [NSMutableString stringWithString:@"abc"];
36 
37         [str4 appendString:@"def"];
38 
39         NSLog(@"str4:%@",str4);//abcdef
40 
41         //按照指定格式追加一个字符串
42 
43         [str4 appendFormat:@"123%@abc",@"def"];
44 
45         NSLog(@"str4:%@",str4);//abcdef123defabc

回到顶部

二、NSNumber数字对象

1 在很多类使用的时候,如果使用数值,就需要将数值转换成对象类型,而基本数据类型,是无法使用的,所以我们就要封装基本数据类型变为对象类型,数字对象常用处理方式和使用与基本数据类型无差别。其实就是把栈区放入堆区

2 数字对象的初始化

 1 //数字对象初始化
 2 
 3 int i = 10;//基本数字类型
 4 
 5 NSNumber* number = [NSNumber numberWithInt:i];//对象类型 封装
 6 
 7 //3 数字对象转换为基本数据类型
 8 
 9 //解封
10 
11 int i2 = [number intValue];

练习:将基本数据类型int、char、float、double分别封装成对象类型,输出其值

练习:将对象类型,拆为基本数据类型,输出

回到顶部

三、NSValue

1 有时需要创建一个对象,以密切反应原始数据类型或者数据结构,这种情况就需要使用NSValue类,它可以将任何OC中有效的变量类型封装成对象类型

2 NSNumber是NSValue的子类

3 使用NSValue封装一个结构体

 1 *1 定义一个结构体类型
 2 
 3 typedef struct{
 4 
 5     int x;
 6 
 7     int y;
 8 
 9 }point1;
10 
11 *2 声明一个结构体变量并赋值
12 
13 //结构体类型
14 
15 point1 point;
16 
17 point.x = 10;
18 
19 point.y = 20;
20 
21 *3 通过NSValue,将结构体封装成NSValue对象
22 
23 //对象类型 封装结构体
24 
25 //参数1 结构体变量的内存地址 参数2 地址对应结构体类型
26 
27     NSValue* value = [NSValue valueWithBytes:&point objCType:@encode(point1)];
28 
29 *4 把结构体对象拆成结构体类型
30 
31 //拆封
32 
33 point1 point2;
34 
35 [value getValue:&point2];
36 
37 NSLog(@"x:%d,y:%d",point2.x,point2.y);

回到顶部

四、NSDate日期对象

1 NSDate存储的是时间信息,默认存储的是世界标准时间(UTC),输出时需要根据时区转换为本地时间。中国大陆,香港,澳门,台湾的时间均与UTC时间差+8小时,也就是UTC+8

2 NSDate的使用

 1         //初始化 得到当前时间UTC
 2 
 3         NSDate* date = [[NSDate alloc] init];
 4 
 5         NSLog(@"date:%@",date);
 6 
 7         //得到一个时间,和当前比延迟30秒
 8 
 9         NSDate* date2 = [NSDate dateWithTimeIntervalSinceNow:30];
10 
11         NSLog(@"date2:%@",date2);
12 
13         //练习:得到昨天的此时此刻,明天的此时此刻
14 
15         NSDate* date3 = [NSDate dateWithTimeIntervalSinceNow:3600*24];
16 
17         NSLog(@"明天此时此刻:%@",date3);
18 
19         NSDate* date4 = [NSDate dateWithTimeIntervalSinceNow:-3600*24];
20 
21         NSLog(@"昨天此时此刻:%@",date4);
22 
23         //得到一个过去的随机时间
24 
25         NSDate* date5 = [NSDate distantPast];
26 
27         NSLog(@"过去的随机时间:%@",date5);
28 
29         //得到一个将来的随机时间
30 
31         NSDate* date6 = [NSDate distantFuture];
32 
33         NSLog(@"将来的随机时间:%@",date6);
34 
35         //和过去时间对比 返回秒数
36 
37         NSTimeInterval second = [date timeIntervalSince1970];
38 
39         NSLog(@"second:%lf",second);
40 
41         //比较两个时间 返回更早的时间
42 
43         NSDate* earlierDate = [date earlierDate:date3];
44 
45         NSLog(@"earlierDate:%@",earlierDate);
46 
47         //比较两个时间 返回更晚的时间
48 
49         NSDate* laterDate = [date laterDate:date3];
50 
51         NSLog(@"laterDate:%@",laterDate);
52 
53 //将世界标准时间 转换为 当地时间
54 
55         //1.创建模板对象
56 
57         NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
58 
59         //2.设置模板信息
60 
61         dateFormatter.dateFormat = @"HH:mm:ss MM-dd-yyyy";//hh 12小时制 HH 24小时制
62 
63         //3.通过模板对象将时间对象转换成字符串
64 
65         NSString* str = [dateFormatter stringFromDate:date];
66 
67         NSLog(@"%@",str);

回到顶部

五、NSArray数组对象

1 数组对象是一组有序对象的集合,通过索引下标取到数组中的各个元素对象,与字符串相同,数组也有可变数组和不可变数组,数组中不可以保存基本数据类型、结构体数据类型,需要使用NSNumber和NSValue进行数据封装

2 数组的使用

 1      //初始化
 2 
 3         NSArray* array = [NSArray array];
 4 
 5         //数组中添加一个元素
 6 
 7         NSArray* array2 = [NSArray arrayWithObject:@"one"];
 8 
 9         NSLog(@"array2%@",array2);
10 
11         //数组中添加多个元素
12 
13         NSArray* array3 = [NSArray arrayWithObjects:@"two",@"three", nil];
14 
15         NSLog(@"array3%@,%p",array3,array3);
16 
17         //通过一个已有的数组 创建一个新的数组
18 
19         NSArray* array4 = [NSArray arrayWithArray:array3];
20 
21         NSLog(@"array4%@,%p",array4,array4);

3 数组的常见用法

 1 //得到数组的长度
 2 
 3 NSUInteger length = [array4 count];
 4 
 5 //通过下标得到数组的元素
 6 
 7 NSString* str = [array4 objectAtIndex:0];
 8 
 9 //遍历数组
10 
11 for (int i = 0; i < [array4 count]; i++) {
12 
13             NSLog(@"array4[%d]:%@",i,[array4 objectAtIndex:i]);
14 
15         }

练习:向数组中存放数据,

int i = 10;

char c = 'a';

BOOL b = YES;

Student age:18 name:zhangsan

输出数组对象

练习:创建一个学生对象Student,有年龄,姓名,创建5个学生对象,放到数组中,遍历数组。查询5个学生信息,只显示姓名为zhangsan的信息。只显示年龄为18的学生信息。

 1 //4 在原来的数组上追加一组对象(把这一组的元素一一追加到原来的数组中)并创建新的数组
 2 
 3 NSArray* array4 = [array arrayByAddingObjectsFromArray:array2];
 4 
 5 //5 在原来数组上加一个数组对象并创建新的数组
 6 
 7 NSArray* array3 = [array arrayByAddingObject:array2];
 8 
 9 //6 将数组中的元素按指定符号连接起来变为字符串
10 
11 NSString* str = [array4 componentsJoinedByString:@":"];
12 
13 NSLog(@"%@",str);//one:two:three:1:2:3
14 
15 //7 将字符串按指定符号变为数组
16 
17 NSArray* array5 = [str componentsSeparatedByString:@":"];
18 
19 NSLog(@"%@",array5);
20 
21 //输出结果
22 
23 /*(
24 
25     one,
26 
27     two,
28 
29     three,
30 
31     1,
32 
33     2,
34 
35     3
36 
37 )*/
38 
39 //8 判断数组中是否包含某个对象,返回值是布尔值类型
40 
41 BOOL b = [array5 containsObject:@"two"];
42 
43 NSLog(@"%d",b);
44 
45 //9 获取某个对象在数组的下标,如果数组中不存在该对象,则返回一个垃圾值下标
46 
47 NSUInteger index = [array5 indexOfObject:@"three"];
48 
49 NSLog(@"%ld",index);
50 
51 //10 获取数组中最后一个元素
52 
53 NSString* lastObj = [array5 lastObject];
54 
55 NSLog(@"%@",lastObj);    

作业:查API文档学习:NSMutableArray(可变数组)、NSMutableString(可变字符串)

作业:根据身份证号码,求年龄?求出生年月日?(NSString、NSMutableString)

作业:100.100.100.100(NSArray NSMutableArray)

 第一位0~100,第二位,0~100 广州

 第一位100~200,第二位,0~100 北京

 第一位100~200,第二位,100~200 上海

作业:学生->班级->学院->学校

       8     4     2    1

* 查看所有学生信息

* 显示 姓名zhangsan

* 显示 年龄18

(NSArray NSMutableArray)

posted @ 2013-12-27 14:01  回读(IOS)  阅读(561)  评论(0编辑  收藏  举报