黑马程序员——Foundation框架学习——OC结构体、字符串、OC集合、NSNumber,NSValue、OC时间对象
2015-04-07 12:32
716 查看
-----------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -----------
如:
NSRange(location length) :用于标记字符串中某个字符或者字符串的位置或者长度
NSPoint\CGPoint:记录屏幕中一个点的位置。
NSSize\CGSize: 记录屏幕中区域的范围,长 和 宽。
NSRect\CGRect (CGPint CGSize):用于记录屏幕中某一确定范围,它包括:点NSPoint\CGPoint,和范围:NSSize\CGSize。这样就可以确定一个区域了。
上面的方法名有NS开头和CG开头,CG开头的结构体具有跨平台性。
在iOS中我们将屏幕的左上方设为原点。
NSRect\CGRect中计算屏幕大小方式:以点坐标向下和向左加上范围长和宽。
1. NSRange(location length)的使用
在找不到字符串范围结果的时候:location=NSNotFound==-1 一般显示结果不是-1 是一串数字,是因为location类型为unsigned long 无符号 将-1以无符号的形式输出了
2.NSPoint\CGPoint 、NSSize\CGSize、NSSize\CGSize的使用
3. 结构体的一些方法
1> 比较两个点是否相同
2> 判断一个区域是否含有某个点
使用这些CGPointEqualToPoint、CGRectContainsPoint等函数的前提是添加CoreGraphics框架,Xcode6.2中不需要。
字符串带参数:
int a = 10;
NSString *s3 = [[NSString alloc] initWithFormat:@"age is %d", a];
C字符串 --> OC字符串
初始化方法:initWithUTF8String
NSString *s4 = [[NSString alloc] initWithUTF8String:"jack"];
OC字符串 --> C字符串
const char *cs = [s4 UTF8String];
// NSUTF8StringEncoding 用到中文就可以用这种编码
NSString *s5 = [[NSString alloc] initWithContentsOfFile:@"/Users/apple/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil];
将本地文件作为字符串导出
NSString *str5 = [[NSString alloc] initWithContentsOfFile:@"/Users/dymost/Desktop/作业.m" encoding:NSUTF8StringEncoding error:nil];
NSLog(@"\n%@", str5); // 输出结果为文件内容
将文件以字符串形式导出和保存,一般用URL。 URL也叫资源路径,分为本地文件和服务器文件。
格式 --> 协议头://路径
本地文件: file:///Users/dymost/Desktop/作业.m
网络文件:
ftp:// http://www.baidu.com
(NSString *) 在xcode6.2中不支持中文路径 !!! 否则打印无结果, 换成没有中文字符的路径,则成功
NSURL *url = [NSURL alloc] initWithString:<#(NSString *)#>
NSURL *url = [[NSURL alloc] initWithString:@"file:///Users/dymost/Desktop/作业.m"];
NSString *str6 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
NSLog(@"%@", str6);
输出结果:2015-04-01 10:34:39.039 02-NSString字符串[568:28985] (null)
Program ended with exit code: 0
成功输出文件内容
NSURL *url = [[NSURL alloc] initWithString:@"file:///Users/dymost/Desktop/m.m"];
NSString *str6 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
NSLog(@"\n%@", str6);
xcode 6.2 fileURLWithPath 中可以出现中文字符
NSURL *url2 = [NSURL fileURLWithPath:@"/Users/dymost/Desktop/作业.m"];
NSString *str7 = [[NSString alloc] initWithContentsOfURL:url2 encoding:NSUTF8StringEncoding error:nil];
NSLog(@"\n%@", str7); // 输出文件内容
字符串还分为可变字符串和不可变字符串
一般创建的NSString 字符串是不可变字符串,既创建完后不可再改变。
可变字符串是用NSMutableString创建的,创建完后可以改变。
比如调用方法在可变字符串后面拼接字符串,调用appendString方法[字符串指针 appendString:字符串];
可变字符串的一些方法:
OC数组也分为可变的和不可变的两种。
1--->不可变数组NSArray
1.OC数组的创建
[NSArray array] 一直为空
[NSArray arrayWithObject:id]; 存储单个对象
[NSArray arrayWithObject:多个对象, nil]; 存储多个对象
@[对象1, 对象2, 对象3……]; 快速创建对象
OC数组中不能有nil,因为OC数组默认将nil当成OC数组元素结束的标志
OC数组可以存放不同类型的OC对象,但仅仅只能存放OC对象,基本数据类型不能存放,比如int,struct、enum等
NSArray 是不可变数组当数组创建时没有赋值初始化,将一直是空
2. 访问OC数组中元素的个数(得出数组元素个数)
点语法: 数组名.count
调用对象方法: [数组名 count];
3. OC数组中元素的访问
1> 调用对象方法
[oc数组名 objectAtIndex: 位置序号]
2> OC数组名[位置序号]
4.遍历数组中的对象
1>通常方法for循环,不用代码块block
2>特殊for循环
3>利用block代码块,调数组方法 enumerateObjectsUsingBlock
2-->可变数组的基本使用
1> 共同点
* 都是集合,都能存放多个OC对象
* 只能存放OC对象,不能存放非OC对象类型(基本数据类型:int、char、float等,结构体,枚举)
* 本身都不可变,都有一个可变的子类
2> 不同点
* NSArray有顺序,NSSet没有顺序
1-->NSSet的基本使用
2-->NSMutableSet的基本使用
key ----> value
索引 ----> 文字内容
1> 创建不可变字典
字典是通过索引key 来寻找内容value的
获取字典中键值对的个数
直接输出字典
结果是,是不能输出汉字的,且为随机输出键值对
{
address = "\U5317\U4eac";
name = dymost;
}
2> 可变字典基本使用
字典存储的时候是无序的。
和NSArray 同类方法变量字典
输出其中信息
集合
1.NSArray\NSMutableArray
* 有序
* 快速创建(不可变):@[obj1, obj2, obj3]
* 快速访问元素:数组名[i]
2.NSSet\NSMutableSet
* 无序
3.NSDictionary\NSMutableDictionary
* 无序
* 快速创建(不可变):@{key1 : value1, key2 : value2}
* 快速访问元素:字典名[key]
1、 NSNumber
1>将int型包装成NSNumber对象
NSNumber *num = [NSNumber numberWithInt:10];
快速方法: @“10”
2> 将 NSNumber 对象转成int型
int a = [num intValue];
3> 将其他基本类型转成 NSNumber
double: @“10.3”
BOOL: @“YES”
char: @"c"
字符串: @“a”
// 将age变量包装成NSNumber对象
int age = 100;
@(age);
4> 将NSNumber转成 其他类型
方法
[NSNumber对象 doubleValue]
[NSNumber对象 charValue]
[NSNumber对象 BOOLValue]
[NSNumber对象 stringValue]
NSValue不仅能转换基本数据类型,还能转换结构体
NSDate *date = [NSDate date]; // 对象中默认记录系统时间格林时区0时区
打印时间对象
NSLog(@"%@", date);
创建比现在时间早几秒的时间对象方法
NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date];
还有一种创建时间对象的方式,计算从1970年1月1号00时00分00秒 到现在的秒数
NSTimeInterval seconds = [date2 timeIntervalSince1970];
记录到现在的秒数
[date2 timeIntervalSinceNow];
格式化输出日期的方法
首先要创建日期格式化类
// 日期格式化类
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// 再调用日期格式化 对象方法 dateFormat 来规定日期格式
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSDate *date = [NSDate date];
NSString *str = [formatter stringFromDate:date];
NSLog(@"%@", str);
将字符串转换成时间对象的方法,用上面的日期格式输出
NSString *time = @"2011/09/10 18:56";
NSDate *date = [formatter dateFromString:time];
NSLog(@"%@", date);
-----------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -----------
一、 OC结构体
OC中给我们封装好了一些结构体供我们使用如:
NSRange(location length) :用于标记字符串中某个字符或者字符串的位置或者长度
NSPoint\CGPoint:记录屏幕中一个点的位置。
NSSize\CGSize: 记录屏幕中区域的范围,长 和 宽。
NSRect\CGRect (CGPint CGSize):用于记录屏幕中某一确定范围,它包括:点NSPoint\CGPoint,和范围:NSSize\CGSize。这样就可以确定一个区域了。
上面的方法名有NS开头和CG开头,CG开头的结构体具有跨平台性。
在iOS中我们将屏幕的左上方设为原点。
NSRect\CGRect中计算屏幕大小方式:以点坐标向下和向左加上范围长和宽。
1. NSRange(location length)的使用
//确定 @"i love oc" 中 love的范围 //NSRange r1 = {2, 4}; // 不用 //NSRange r2 = {.location = 2, .length = 4};// 不用 //NSRange r3 = NSMakeRange(2, 4); // 掌握 NSString *str = @"i love oc"; // 查找某个字符串在str中的范围 // 如果找不到,length=0,location=NSNotFound==-1 NSRange range = [str rangeOfString:@"java"]; NSLog(@"loc = %ld, length=%ld", range.location, range.length);
在找不到字符串范围结果的时候:location=NSNotFound==-1 一般显示结果不是-1 是一串数字,是因为location类型为unsigned long 无符号 将-1以无符号的形式输出了
2.NSPoint\CGPoint 、NSSize\CGSize、NSSize\CGSize的使用
CGPoint p1 = NSMakePoint(10, 10); // 点(10, 10) NSPoint p2 = CGPointMake(20, 20); // 最常用。点(20, 20) NSSize s1 = CGSizeMake(100, 50); // 宽:100,高:50 NSSize s2 = NSMakeSize(100, 50); // 宽:100,高:50 CGRect r1 = CGRectMake(0, 0, 100, 50); CGRect r2 = { {0, 0}, {100, 90}}; CGRect r3 = {p1, s2}; // 表示原点 // CGPointZero == CGPointMake(0, 0) // 使用CGPointZero等的前提是添加CoreGraphics框架 CGRect r4 = {CGPointZero, CGSizeMake(100, 90)}; // 将结构体转为字符串 NSString *str1 = NSStringFromPoint(p1); NSString *str2 = NSStringFromSize(s2); NSString *str3 = NSStringFromRect(r3); NSLog(@"%@--%@--%@", str1, str2, str3); /* 输出结果: {10, 10}--{100, 50}--{{10, 10}, {100, 50}} 结构体转换成字符串后输出相应的点坐标,范围大小和位置。 */ /* NSLog(@"(x=%f, y=%f), (width=%f, height=%f)", r3.origin.x, r3.origin.y, r3.size.width, r3.size.height) == NSLog(@"%@", str3); */
3. 结构体的一些方法
1> 比较两个点是否相同
// 比较两个点是否相同(x、y) BOOL b = CGPointEqualToPoint(CGPointMake(10, 10), CGPointMake(10, 10));
2> 判断一个区域是否含有某个点
//区域的范围 x (50, 150) y (40 , 90) BOOL b2 = CGRectContainsPoint(CGRectMake(50, 40, 100, 50), CGPointMake(60, 45));
使用这些CGPointEqualToPoint、CGRectContainsPoint等函数的前提是添加CoreGraphics框架,Xcode6.2中不需要。
二、 字符串
1、字符串的创建
直接创建: NSString *s1 = @"jack"; ==== NSString *s2 = [[NSString alloc] initWithString:@"jack"];字符串带参数:
int a = 10;
NSString *s3 = [[NSString alloc] initWithFormat:@"age is %d", a];
C字符串 --> OC字符串
初始化方法:initWithUTF8String
NSString *s4 = [[NSString alloc] initWithUTF8String:"jack"];
OC字符串 --> C字符串
const char *cs = [s4 UTF8String];
// NSUTF8StringEncoding 用到中文就可以用这种编码
NSString *s5 = [[NSString alloc] initWithContentsOfFile:@"/Users/apple/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil];
将本地文件作为字符串导出
NSString *str5 = [[NSString alloc] initWithContentsOfFile:@"/Users/dymost/Desktop/作业.m" encoding:NSUTF8StringEncoding error:nil];
NSLog(@"\n%@", str5); // 输出结果为文件内容
将文件以字符串形式导出和保存,一般用URL。 URL也叫资源路径,分为本地文件和服务器文件。
格式 --> 协议头://路径
本地文件: file:///Users/dymost/Desktop/作业.m
网络文件:
ftp:// http://www.baidu.com
(NSString *) 在xcode6.2中不支持中文路径 !!! 否则打印无结果, 换成没有中文字符的路径,则成功
NSURL *url = [NSURL alloc] initWithString:<#(NSString *)#>
NSURL *url = [[NSURL alloc] initWithString:@"file:///Users/dymost/Desktop/作业.m"];
NSString *str6 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
NSLog(@"%@", str6);
输出结果:2015-04-01 10:34:39.039 02-NSString字符串[568:28985] (null)
Program ended with exit code: 0
成功输出文件内容
NSURL *url = [[NSURL alloc] initWithString:@"file:///Users/dymost/Desktop/m.m"];
NSString *str6 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
NSLog(@"\n%@", str6);
xcode 6.2 fileURLWithPath 中可以出现中文字符
NSURL *url2 = [NSURL fileURLWithPath:@"/Users/dymost/Desktop/作业.m"];
NSString *str7 = [[NSString alloc] initWithContentsOfURL:url2 encoding:NSUTF8StringEncoding error:nil];
NSLog(@"\n%@", str7); // 输出文件内容
字符串还分为可变字符串和不可变字符串
一般创建的NSString 字符串是不可变字符串,既创建完后不可再改变。
可变字符串是用NSMutableString创建的,创建完后可以改变。
比如调用方法在可变字符串后面拼接字符串,调用appendString方法[字符串指针 appendString:字符串];
可变字符串的一些方法:
// 创建可变字符串 NSMutableString *s1 = @"dymost"; // 创建带有参数的可变字符串 NSMutableString *s2 = [NSMutableString stringWithFormat:@"dymost age is %d", 23]; // 在可变字符串后拼接字符串 [s1 appendString:@"age"]; // 不带参数 [s1 appendFormat:@" is %d", 23]; // 带参数 // 获取is的范围 NSRange range = [s2 rangeOfString:@"is"]; // 删除is [s2 deleteCharactersInRange:range];
三、 OC的集合
1、 OC数组NSArray\NSMutableString
OC数组存储的时对象,在后面引用别的方法来使OC数组能存储基本数据类型。OC数组也分为可变的和不可变的两种。
1--->不可变数组NSArray
1.OC数组的创建
[NSArray array] 一直为空
[NSArray arrayWithObject:id]; 存储单个对象
[NSArray arrayWithObject:多个对象, nil]; 存储多个对象
@[对象1, 对象2, 对象3……]; 快速创建对象
NSArray *array1 = [NSArray array]; NSArray *array2 = [NSArray arrayWithObject:@"dymost"]; NSArray *array3 = [NSArray arrayWithObjects:@"dymost", @"dimost", nil]; NSArray *array4 = @[@"dymost", @"dimost"];
OC数组中不能有nil,因为OC数组默认将nil当成OC数组元素结束的标志
OC数组可以存放不同类型的OC对象,但仅仅只能存放OC对象,基本数据类型不能存放,比如int,struct、enum等
NSArray 是不可变数组当数组创建时没有赋值初始化,将一直是空
2. 访问OC数组中元素的个数(得出数组元素个数)
点语法: 数组名.count
调用对象方法: [数组名 count];
int a = array1.count; int b = [array1 count];
3. OC数组中元素的访问
1> 调用对象方法
[oc数组名 objectAtIndex: 位置序号]
2> OC数组名[位置序号]
NSLog(@"%@", array3[1]); NSLog(@"%@", [array3 objectAtIndex:1]);
4.遍历数组中的对象
1>通常方法for循环,不用代码块block
Person *p1 = [[Person alloc]init]; Person *p2 = [[Person alloc]init]; Person *p3 = [[Person alloc]init]; NSArray *arr = @[p1, p2, p3]; for (int i = 0; i < arr.count; i++) { NSLog(@"%@", arr[i]); }
2>特殊for循环
// id obj代表数组中的每一个元素 //int i = 0; for (id obj in arr) { // 找出obj元素在数组中的位置 NSUInteger i = [arr indexOfObject:obj]; NSLog(@"%ld - %@", i, obj); }
3>利用block代码块,调数组方法 enumerateObjectsUsingBlock
[arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { NSLog(@"%ld - %@",idx, obj); if (idx == 1) { *stop = YES; } }];
2-->可变数组的基本使用
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose", @"jim", nil]; // 添加元素 [array addObject:[[Person alloc] init]]; [array addObject:@"jack"]; // 删除元素 //[array removeAllObjects]; // 删除指定的对象 // [array removeObject:@"jack"]; [array removeObjectAtIndex:0]; // 错误写法 // [array addObject:nil];
2、 NSSet\NSMutableSet
NSSet和NSArray的对比1> 共同点
* 都是集合,都能存放多个OC对象
* 只能存放OC对象,不能存放非OC对象类型(基本数据类型:int、char、float等,结构体,枚举)
* 本身都不可变,都有一个可变的子类
2> 不同点
* NSArray有顺序,NSSet没有顺序
1-->NSSet的基本使用
NSSet *s = [NSSet set]; // 创建一个空Set,直到消失都是空 NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose", @"jack2",@"jack3",nil]; // 随机拿出一个元素 NSString *str = [s2 anyObject]; NSLog(@"%@", str); // 计算Set其中存储的对象个数 NSLog(@"%ld", s2.count);
2-->NSMutableSet的基本使用
NSMutableSet *s = [NSMutableSet set]; // 添加元素 [s addObject:@"hack"]; // 删除元素 [s removeObject:<#(id)#>]; // 参数填写的是对象,写哪个对象删除哪个对象
3、 NSDictionary\NSMutableDictionary
字典中存储的对象是一对一对的,我们称之为键值对。key ----> value
索引 ----> 文字内容
1> 创建不可变字典
// 字典存储一个键值对的方法 NSDictionary *dict = [NSDictionary dictionaryWithObject:@"dymost" forKey:@"name"]; // 字典存储多个键值对的方法 NSArray *value = @[@"dimsot", @"beijin"]; NSArray *key = @[@"name", @"address"]; NSDictionary *dics = [NSDictionary dictionaryWithObjects:value forKeys:key]; // 或者NSDictionary *dics = [NSDictionary dictionaryWithObjects:@"dimsot", @"beijin" forKeys:@"name", @"address"]; NSDictionary *dic1 =[NSDictionary dictionaryWithObjectsAndKeys: @"dymost",@"name", @"北京",@"address", @"867036316",@"QQ", nil]; NSDictionary *dic2 = @{@"name" : @"dymost", @"address" : @"北京"};
字典是通过索引key 来寻找内容value的
id obj = [dic1 objectForKey:@"name"]; id obj1 = dic2[@"name"];
获取字典中键值对的个数
NSLog(@"\n%ld", dics.count); // .count 返回的时键值对个数 NSLog(@"%d",[dic2 count])
直接输出字典
NSDictionary *dic2 = @{@"name" : @"dymost", @"address" : @"北京"}; NSLog(@"%@", dic2);
结果是,是不能输出汉字的,且为随机输出键值对
{
address = "\U5317\U4eac";
name = dymost;
}
2> 可变字典基本使用
NSMutableDictionary *dict = [NSMutableDictionary dictionary]; // 直接初始化赋值 NSMutableDictionary *dict1 = @{@"name" : @"dymost"}; // 添加键值对 [dict setObject:@"dymost" forKey:@"name"]; [dict setValue:@"beijin" forKey:@"address"]; Person *p = [[Person alloc] init]; [dict setObject:p forKey:@"obj"]; // 移除键值对 [dict removeObjectForKey:@"name"]; NSString *str = dict[@"obj"]; // 可以将对象赋值给字符串 //打印可变字符串 NSLog(@"%@",dict1); NSLog(@"%@", @[@"jack", @"rose"]);
3、 字典是的一些使用注意和方法
字典不允许有相同的key,但允许有相同的value(object)字典存储的时候是无序的。
和NSArray 同类方法变量字典
[dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { NSLog(@"%@ --- %@", key, obj); *stop = YES; }];
4、 字典数组相互嵌套
NSArray *arr = @[ @{@"name" : @"dymost", @"address" : @"beijin", @"book" : @[@"Object-C", @"C语言"]}, @{@"name" : @"dimost", @"QQ" : @"86703616"} ];
输出其中信息
NSString *bookName = arr[0][@"book"][1]; NSLog(@"%@", bookName); NSArray *array =arr[0][@"book"]; NSLog(@"%@", array);
集合
1.NSArray\NSMutableArray
* 有序
* 快速创建(不可变):@[obj1, obj2, obj3]
* 快速访问元素:数组名[i]
2.NSSet\NSMutableSet
* 无序
3.NSDictionary\NSMutableDictionary
* 无序
* 快速创建(不可变):@{key1 : value1, key2 : value2}
* 快速访问元素:字典名[key]
四、 NSNumber和NSValue
这两个类就是将基本数据类型包装成类,使得OC集合可以进行存储。1、 NSNumber
1>将int型包装成NSNumber对象NSNumber *num = [NSNumber numberWithInt:10];
快速方法: @“10”
2> 将 NSNumber 对象转成int型
int a = [num intValue];
3> 将其他基本类型转成 NSNumber
double: @“10.3”
BOOL: @“YES”
char: @"c"
字符串: @“a”
// 将age变量包装成NSNumber对象
int age = 100;
@(age);
4> 将NSNumber转成 其他类型
方法
[NSNumber对象 doubleValue]
[NSNumber对象 charValue]
[NSNumber对象 BOOLValue]
[NSNumber对象 stringValue]
2、 NSValue
NSNumber之所以能包装基本数据类型为对象,是因为继承了NSValueNSValue不仅能转换基本数据类型,还能转换结构体
CGPoint p = CGPointMake(10, 10); // 将结构体转为Value对象 NSValue *value = [NSValue valueWithPoint:p]; // 将value转为对应的结构体 // [value pointValue]; NSArray *array = @[value ];
五、 OC的时间的时间对象 NSDate
创建时间对象NSDate *date = [NSDate date]; // 对象中默认记录系统时间格林时区0时区
打印时间对象
NSLog(@"%@", date);
创建比现在时间早几秒的时间对象方法
NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date];
还有一种创建时间对象的方式,计算从1970年1月1号00时00分00秒 到现在的秒数
NSTimeInterval seconds = [date2 timeIntervalSince1970];
记录到现在的秒数
[date2 timeIntervalSinceNow];
格式化输出日期的方法
首先要创建日期格式化类
// 日期格式化类
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// 再调用日期格式化 对象方法 dateFormat 来规定日期格式
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSDate *date = [NSDate date];
NSString *str = [formatter stringFromDate:date];
NSLog(@"%@", str);
将字符串转换成时间对象的方法,用上面的日期格式输出
NSString *time = @"2011/09/10 18:56";
NSDate *date = [formatter dateFromString:time];
NSLog(@"%@", date);
-----------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -----------
相关文章推荐
- iOS Foundation框架 利用NSNumber和NSValue将非OC对象类型数据存放到集合
- iOS Foundation框架 利用NSNumber和NSValue将非OC对象类型数据存放到集合
- iOS Foundation框架 -3.利用NSNumber和NSValue将非OC对象类型数据存放到集合
- 黑马程序员-OC学习笔记-----Foundation框架(集合、NSNumber、NSDate)
- iOS Foundation框架 利用NSNumber和NSValue将非OC对象类型数据存放到集合
- iOS Foundation框架 -3.利用NSNumber和NSValue将非OC对象类型数据存放到集合
- 黑马程序员--OC学习篇之Foundation框架中的NSArray对象和NSMutableArray对象
- 黑马程序员-OC学习笔记之Foundation框架NSNumber、NSValue和NSDate
- 黑马程序员——Foundation框架之结构体、字符串和集合
- 黑马程序员--OC学习篇之Foundation框架中的NSString对象和NSMutableString对象
- OC学习笔记之Foundation框架NSNumber、NSValue和NSDate
- Foundation框架学习1--NSNumber和字符串
- [黑马程序员][OC]Foundation框架中的集合类
- 黑马程序员——Foundation框架:结构体及字符串之NSString
- 黑马程序员- IOS学习笔记-Foundation框架集合类、NSNumber、NSDate
- OC学习篇之---Foundation框架中的NSObject对象
- OC学习篇之---Foundation框架中的NSObject对象
- OC学习篇之---Foundation框架中的NSString对象和NSMutableString对象
- 黑马程序员——foundation框架之NSNumber,NSDate,NSValue
- 黑马程序员——Foundation框架:字符串之集合类