黑马程序员-12.OC的Foundation框架
2014-09-16 13:58
393 查看
------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
-------
1>NSRange的几种用法
2>查找某个字符串在str中的范围
如果找不到,length=0,location=NSNotFound==-1
NSString *str = @"i love oc";
NSRange range = [str rangeOfString:@"java"];
NSLog(@"loc = %ld, length=%ld", range.location, range.length);
2)CGPoint
1>CGpoint :表示一个点的位置坐标信息
2>定义结构
CGPoint p1 = NSMakePoint(10, 10);
NSPoint p2 = CGPointMake(20, 20);
3)CGRect
1>表示一个局域
CGRect r1 =CGRectMake(0,0,
100,
50);
2>表示原点
CGPointZero == CGPointMake(0, 0)
4)将结构体转为字符串
CGPoint p1 = NSMakePoint(10, 10);
NSString *str = NSStringFromPoint(p1);
CGSize s3 = NSMakeSize(200, 60);
NSString *str = NSStringFromSize(s3);
CGRect r1 = CGRectMake(0, 0, 100, 50);
NSString *str = NSStringFromRect(r1);
注意:使用CGPointZero等的前提是添加CoreGraphics框架
5)比较两个点是否相同
2)字符串的创建
3)OC字符串和C字符串的相互转换
4)writeToFile
字符串的导出
2)拼接内容到s1的后面
NSMutableString *s1 = [NSMutableString stringWithFormat:@"my age is 10"];
[s1 appendString:@" 11 12"];
2).NSArray的元素个数
NSLog(@"%ld", array.count);
3).NSArray中元素的访问
NSLog(@"%@", [array3 objectAtIndex:1]);
array3[1];
注意:
OC数组不能存放nil值
OC数组只能存放OC对象、不能存放非OC对象类型,比如int、struct、enum等
这个array永远是空数组
NSArray *array = [NSArray array];
4)数组的遍历的三种方法
1>初始化
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose", @"jim", nil];
2>添加元素
[array addObject:[[Person alloc] init]];
[array addObject:@"jack"];
3>删除元素
[array removeAllObjects];
4> 删除指定的对象
[array removeObject:@"jack"];
[array removeObjectAtIndex:0];
5>@[] 只创建不可变数组NSArray
错误写法
NSMutableArray *array = @[@"jack", @"rose"];
[array addObject:@"jim"];
1>定义和初始化
NSSet *s = [NSSet set];
NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose", @"jack2",@"jack3",nil];
2>随机拿出来一个元素
NSString *str = [s2 anyObject];
NSLog(@"%@", str);
3>NSMutableSet:可变的集合
NSMutableSet *s = [NSMutableSet set];
添加元素
[s addObject:@"hack"];
删除元素
[s removeObject:<#(id)#>];
4>NSSet和NSArray的对比
1> 共同点
* 都是集合,都能存放多个OC对象
* 只能存放OC对象,不能存放非OC对象类型(基本数据类型:int、char、float等,结构体,枚举)
* 本身都不可变,都有一个可变的子类
2> 不同点
* NSArray有顺序,NSSet没有顺序
key ----> value
索引 ----> 文字内容
2)初始化
1>第一种初始化方法
NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];
2>第二种初始化的方法
NSArray *keys = @[@"name", @"address"];
NSArray *objects = @[@"jack", @"北京"];
NSDictionary *dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
3>第三中初始化的方法
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
@"jack", @"name",
@"北京", @"address",
@"32423434", @"qq", nil];*/
4>第四种初始化的方法
NSDictionary *dict = @{@"name" : @"jack", @"address" : @"北京"};
id obj = [dict objectForKey:@"name"];
id obj = dict[@"name"];
NSLog(@"%@", obj);
注意:NSLog(@"%ld", dict.count);
返回的是键值对的个数
3)字典的使用
添加键值对
[dict setObject:@"jack" forKey:@"name"];
移除键值对
[dict removeObjectForKey:<#(id)#>];
NSString *str = dict[@"name"];
4)字典的遍历
注意:
字典不允许有相同的key,但允许有相同的value(Object)
字典无序的
5)多个类型的键值对进行初始化和取值
OC中集合的总结
1>.NSArray\NSMutableArray
* 有序
* 快速创建(不可变):@[obj1, obj2, obj3]
* 快速访问元素:数组名[i]
2>NSSet\NSMutableSet
* 无序
3>NSDictionary\NSMutableDictionary
* 无序
* 快速创建(不可变):@{key1 : value1, key2 : value2}
* 快速访问元素:字典名[key]
1)将各种基本数据类型包装成NSNumber对象
1>整形包装成NSNumber
@10.5;
2>布尔包装成NSNumber
@YES;
3>注意区分 @'A';和 @"A";
@'A'; // NSNumber对象
@"A"; // NSString对象
4> 将age变量包装成NSNumber对象
int age = 100;
@(age);
//[NSNumber numberWithInt:age];
5>把整形包装成NSNumber对象
int a = 20;
// @"20"
NSString *str = [NSString stringWithFormat:@"%d", a];
NSNumber对象装换成整形
NSLog(@"%d", [str intValue]
NSDate *date = [NSDate date];
2打印出的时候是0时区的时间(北京-东8区)
NSLog(@"%@", date);
3)日期格式化类
4 将字符串按一定的格式输出
2)结构体--->OC对象
CGPoint p = CGPointMake(10, 10);
3)将结构体转为Value对象
NSValue *value = [NSValue valueWithPoint:p];
4)将value转为对应的结构体
[value pointValue];
NSArray *array = @[value ];
------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
-------
-------
1.NSRange
1)NSRange(结构体)1>NSRange的几种用法
NSRange r1 = {2, 4}; // 不用 NSRange r2 = {.location = 2, .length = 4};// 不用 NSRange r3 = NSMakeRange(2, 4); // 掌握
2>查找某个字符串在str中的范围
如果找不到,length=0,location=NSNotFound==-1
NSString *str = @"i love oc";
NSRange range = [str rangeOfString:@"java"];
NSLog(@"loc = %ld, length=%ld", range.location, range.length);
2)CGPoint
1>CGpoint :表示一个点的位置坐标信息
2>定义结构
CGPoint p1 = NSMakePoint(10, 10);
NSPoint p2 = CGPointMake(20, 20);
3)CGRect
1>表示一个局域
CGRect r1 =CGRectMake(0,0,
100,
50);
2>表示原点
CGPointZero == CGPointMake(0, 0)
4)将结构体转为字符串
CGPoint p1 = NSMakePoint(10, 10);
NSString *str = NSStringFromPoint(p1);
CGSize s3 = NSMakeSize(200, 60);
NSString *str = NSStringFromSize(s3);
CGRect r1 = CGRectMake(0, 0, 100, 50);
NSString *str = NSStringFromRect(r1);
注意:使用CGPointZero等的前提是添加CoreGraphics框架
5)比较两个点是否相同
BOOL b = CGPointEqualToPoint(CGPointMake(10, 10), CGPointMake(10, 10)); //CGRectEqualToRect(<#CGRect rect1#>, <#CGRect rect2#>) //CGSizeEqualToSize(<#CGSize size1#>, <#CGSize size2#>) // x (50, 150) y (40 , 90) BOOL b2 = CGRectContainsPoint(CGRectMake(50, 40, 100, 50), CGPointMake(60, 45)); NSLog(@"%d", b2);
2.NSString
1)NSString :不可变字符串(初始化以后不能够改变字符串的长度)2)字符串的创建
NSString *s1 = @"jack"; NSString *s2 = [[NSString alloc] initWithString:@"jack"]; NSString *s3 = [[NSString alloc] initWithFormat:@"age is %d", 10];
3)OC字符串和C字符串的相互转换
// C字符串 --> OC字符串 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];
4)writeToFile
字符串的导出
[@"Jack\nJack" writeToFile:@"/Users/apple/Desktop/my.txt" at 4000 omically:YES encoding:NSUTF8StringEncoding error:nil]; NSString *str = @"4234234"; NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/my2.txt"]; [str writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil];
3.NSMutableString
1)NSMutableString : 可变字符串2)拼接内容到s1的后面
NSMutableString *s1 = [NSMutableString stringWithFormat:@"my age is 10"];
[s1 appendString:@" 11 12"];
4.NSArray :不可变数组
1).NSArray的创建NSArray *array2 = [NSArray arrayWithObject:@"jack"]; // nil是数组元素结束的标记 NSArray *array3 = [NSArray arrayWithObjects:@"jack", @"rose", nil]; // [array2 count]; //NSArray *array4 = [NSArray arrayWithObjects:@"jack", @"rose", @"4324324", nil]; // 快速创建一个NSArray对象 NSArray *array4 = @[@"jack", @"rose", @"4324324"];
2).NSArray的元素个数
NSLog(@"%ld", array.count);
3).NSArray中元素的访问
NSLog(@"%@", [array3 objectAtIndex:1]);
array3[1];
注意:
OC数组不能存放nil值
OC数组只能存放OC对象、不能存放非OC对象类型,比如int、struct、enum等
这个array永远是空数组
NSArray *array = [NSArray array];
4)数组的遍历的三种方法
Person *p = [[Person alloc] init]; NSArray *array = @[p, @"rose", @"jack"]; ********************第一种方法****************** for (int i = 0; i
5.NSMutableArray : 可变数组
1)可变数组的基本用法1>初始化
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose", @"jim", nil];
2>添加元素
[array addObject:[[Person alloc] init]];
[array addObject:@"jack"];
3>删除元素
[array removeAllObjects];
4> 删除指定的对象
[array removeObject:@"jack"];
[array removeObjectAtIndex:0];
5>@[] 只创建不可变数组NSArray
错误写法
NSMutableArray *array = @[@"jack", @"rose"];
[array addObject:@"jim"];
6.计算代码行数
#import // 计算文件的代码行数 /* path : 文件的全路径(可能是文件夹、也可能是文件) 返回值 int :代码行数 */ NSUInteger codeLineCount(NSString *path) { // 1.获得文件管理者 NSFileManager *mgr = [NSFileManager defaultManager]; // 2.标记是否为文件夹 BOOL dir = NO; // 标记是否为文件夹 // 标记这个路径是否存在 BOOL exist = [mgr fileExistsAtPath:path isDirectory:&dir]; // 3.如果不存在,直接返回0 if(!exist) { NSLog(@"文件路径不存在!!!!!!"); return 0; } // 代码能来到着,说明路径存在 if (dir) { // 文件夹 // 获得当前文件夹path下面的所有内容(文件夹、文件) NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil]; // 定义一个变量保存path中所有文件的总行数 int count = 0; // 遍历数组中的所有子文件(夹)名 for (NSString *filename in array) { // 获得子文件(夹)的全路径 NSString *fullPath = [NSString stringWithFormat:@"%@/%@", path, filename]; // 累加每个子路径的总行数 count += codeLineCount(fullPath); } return count; } else { // 文件 // 判断文件的拓展名(忽略大小写) NSString *extension = [[path pathExtension] lowercaseString]; if (![extension isEqualToString:@"h"] && ![extension isEqualToString:@"m"] && ![extension isEqualToString:@"c"]) { // 文件拓展名不是h,而且也不是m,而且也不是c return 0; } // 加载文件内容 NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; // 将文件内容切割为每一行 NSArray *array = [content componentsSeparatedByString:@"\n"]; // 删掉文件路径前面的/Users/apple/Desktop/iOS课堂共享/0722课堂共享/ NSRange range = [path rangeOfString:@"/Users/apple/Desktop/iOS课堂共享/0722课堂共享/"]; NSString *str = [path stringByReplacingCharactersInRange:range withString:@""]; // 打印文件路径和行数 NSLog(@"%@ - %ld", str, array.count); return array.count; } } int main() { NSUInteger count = codeLineCount(@"/Users/apple/Desktop/iOS课堂共享/0722课堂共享"); NSLog(@"%ld", count); return 0; } void test() { NSString *str = @"jack\nrose\njim\njake"; [str writeToFile:@"/Users/apple/Desktop/abc.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil]; NSArray *array = [str componentsSeparatedByString:@"\n"]; for (NSString *line in array) { NSLog(@"%@", line); } //int count = codeLineCount(@"/Users/apple/Desktop/iOS课堂共享/0722课堂共享/0811/代码/04-block/04-block/main.m"); //NSLog(@"count=%d", count); }
7.NSSet:不可变的集合
1)set的基本使用1>定义和初始化
NSSet *s = [NSSet set];
NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose", @"jack2",@"jack3",nil];
2>随机拿出来一个元素
NSString *str = [s2 anyObject];
NSLog(@"%@", str);
3>NSMutableSet:可变的集合
NSMutableSet *s = [NSMutableSet set];
添加元素
[s addObject:@"hack"];
删除元素
[s removeObject:<#(id)#>];
4>NSSet和NSArray的对比
1> 共同点
* 都是集合,都能存放多个OC对象
* 只能存放OC对象,不能存放非OC对象类型(基本数据类型:int、char、float等,结构体,枚举)
* 本身都不可变,都有一个可变的子类
2> 不同点
* NSArray有顺序,NSSet没有顺序
8.NSDictionary
1)字典(里面存放的东西都是键值对key ----> value
索引 ----> 文字内容
2)初始化
1>第一种初始化方法
NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];
2>第二种初始化的方法
NSArray *keys = @[@"name", @"address"];
NSArray *objects = @[@"jack", @"北京"];
NSDictionary *dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
3>第三中初始化的方法
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
@"jack", @"name",
@"北京", @"address",
@"32423434", @"qq", nil];*/
4>第四种初始化的方法
NSDictionary *dict = @{@"name" : @"jack", @"address" : @"北京"};
id obj = [dict objectForKey:@"name"];
id obj = dict[@"name"];
NSLog(@"%@", obj);
注意:NSLog(@"%ld", dict.count);
返回的是键值对的个数
3)字典的使用
添加键值对
[dict setObject:@"jack" forKey:@"name"];
移除键值对
[dict removeObjectForKey:<#(id)#>];
NSString *str = dict[@"name"];
4)字典的遍历
{ NSDictionary *dict = @{ @"address" : @"北京", @"name" : @"jack", @"name2" : @"jack", @"name3" : @"jack", @"qq" : @"7657567765"}; // NSArray *keys = [dict allKeys]; // // for (int i = 0; i
注意:
字典不允许有相同的key,但允许有相同的value(Object)
字典无序的
5)多个类型的键值对进行初始化和取值
NSArray *persons = @[ @{@"name" : @"jack", @"qq" : @"432423423", @"books": @[@"5分钟突破iOS编程", @"5分钟突破android编程"]}, @{@"name" : @"rose", @"qq" : @"767567"}, @{@"name" : @"jim", @"qq" : @"423423"}, @{@"name" : @"jake", @"qq" : @"123123213"} ]; // // NSDictionary *jim = persons[2]; // NSString *bookName = persons[0][@"books"][1]; NSLog(@"%@", bookName); //NSArray *array = persons[0][@"books"]; //NSLog(@"%@", array); // 先取出1位置对应的字典 // 再取出字典中qq这个key对应的数据 //NSLog(@"%@", persons[1][@"qq"]); // NSLog(@"%@", jim);
OC中集合的总结
1>.NSArray\NSMutableArray
* 有序
* 快速创建(不可变):@[obj1, obj2, obj3]
* 快速访问元素:数组名[i]
2>NSSet\NSMutableSet
* 无序
3>NSDictionary\NSMutableDictionary
* 无序
* 快速创建(不可变):@{key1 : value1, key2 : value2}
* 快速访问元素:字典名[key]
9.NSNumber
由于集合里面只可以存放OC对象,所以有的时间需要把基本类型转换成OC对象 这个时间就是用NSNumber1)将各种基本数据类型包装成NSNumber对象
1>整形包装成NSNumber
@10.5;
2>布尔包装成NSNumber
@YES;
3>注意区分 @'A';和 @"A";
@'A'; // NSNumber对象
@"A"; // NSString对象
4> 将age变量包装成NSNumber对象
int age = 100;
@(age);
//[NSNumber numberWithInt:age];
5>把整形包装成NSNumber对象
int a = 20;
// @"20"
NSString *str = [NSString stringWithFormat:@"%d", a];
NSNumber对象装换成整形
NSLog(@"%d", [str intValue]
10.NSDate
1)创建一个时间对象NSDate *date = [NSDate date];
2打印出的时候是0时区的时间(北京-东8区)
NSLog(@"%@", date);
3)日期格式化类
NSDate *date = [NSDate date]; // 日期格式化类 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; NSString *str = [formatter stringFromDate:date]; NSLog(@"%@", str);
4 将字符串按一定的格式输出
// 09/10/2011 NSString *time = @"2011/09/10 18:56"; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; formatter.dateFormat = @"yyyy/MM/dd HH:mm"; NSDate *date = [formatter dateFromString:time]; NSLog(@"%@", date);
11.NSValue
1)是NSNumber的父类 ,NSNumber之所以能包装基本数据类型为对象,是因为继承了NSValue2)结构体--->OC对象
CGPoint p = CGPointMake(10, 10);
3)将结构体转为Value对象
NSValue *value = [NSValue valueWithPoint:p];
4)将value转为对应的结构体
[value pointValue];
NSArray *array = @[value ];
------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
-------
相关文章推荐
- 黑马程序员-IOS学习笔记 Foundation框架下 NSArray的特点和常见方法
- 黑马程序员——Foundation框架学习——OC结构体、字符串、OC集合、NSNumber,NSValue、OC时间对象
- 【黑马程序员】OC-Foundation框架—NSArray和NSMutableArray
- 黑马程序员——Foundation框架(一)
- 黑马程序员:Objective-C Foundation框架
- 黑马程序员——Foundation框架——NSMutableArray常用方法
- 黑马程序员--iOS--Objective-C基础 (Foundation框架 二)
- 黑马程序员—Foundation框架之NSArray与NSMutableArray
- 黑马程序员-------Foundation框架 NSRange
- 【黑马程序员】---Foundation框架总结02
- 黑马程序员—OC语言基础—Foundation框架小结
- 黑马程序员---学习笔记24:Foundation框架
- 黑马程序员-OC学习笔记-----Foundation框架(集合、NSNumber、NSDate)
- 黑马程序员————OC中Foundation框架知识总结
- 黑马程序员-iOS基础-Foundation框架基础
- 黑马程序员-IOS学习笔记 Foundation框架下 NSArray的方法 NSMutableArray的一些方法
- 黑马程序员--Foundation框架之--NSObject类
- 黑马程序员--Foundation框架之--NSArray类以及它的子类NSMutableArray类
- 黑马程序员——零基础学习iOS开发——13 Foundation框架
- 【黑马程序员】OC-Foundation框架—NSDictionary和NSMutableDictionary