黑马程序员-----Foundation框架

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

Foundation框架

一、结构体
1、NSRange用于范围描述
1>NSRange(location, length)
2>赋值方式
①NSMakeRange(NSUInteger loc, NSUInteger len);//必须掌握
②NSRange(2,4);
③NSRange(.location = 2, .length = 4);
3>常用的Range相关的方法
①NSString常用的查找字符串范围的对象方法RangeOfString:(NSString *)
如果找不到返回值为length = 0;location = NSNotFound == -1;


2、NSPoint\CGPoint
1>一般使用CGPoint
2>赋值方式
①CGPointMake(x,y)
②NSMakePoint(x,y)
3、NSSize\CGSzie
1>一般使用CGSize
2>赋值方式
①CGSizeMake(x,y)
②NSMakeSize(x,y)
4、NSRect\CGRect
1>一般使用CGRect
2>赋值方式
①CGRectMake(x,y,width,height)
②NSMakeRect(x,y,width,height)
5、常用结构体操作函数
1>字符串转换函数
①NSStringFromPoint
②NSStringFromSize
③NSStringFromRect
2>比较结构体函数
①BOOL CGPointEqualToPoint(CGPointMake, CGPointMake)
②BOOL CGRectEqualToRect(CGRectMake, CGRectMake)
③BOOL CGSizeEqualToSize(CGSzieMake, CGSizeMake);
④BOOL CGRectContainsPoint(CGRectMake, CGPointMake)


二、NSString和NSMutableString
1、NSString:不可变字符串
1>创建
①NSString *s1 = @"jack";
②NSString *s2 = [[NSString alloc] initWithFormat:@""];
2>NSString的一些处理方法
①将C语言字符串转成OC字符串
NSString *s3 = [[NSString alloc] initWithUTF8String:"c语言字符窜"];
②将OC字符串转成C语言字符串
const char *s4 = [OC字符串 UTF8String];
⑤读取文件内容到OC字符串
NSString *s5 = [[NSString alloc] initWithContentsOfFile:"OC文件路径" encoding:编码格式 error:nil];
⑥读取资源文件到OC字符串
NSString *s6 = [[NSString alloc] initWithContentsOfURL:(NSURL *) encoding:NSUTF8StringEncoding error:nil];
⑦写字符串导出
[@"jack" writeToFile:"路径" atomically:yes encoding:NSUTF8StringEncoding error:nil];
2、NSMutableString:可变字符串
1>NSMutableString创建
与NSString相同
2>处理方法
①追加字符串
[s1 appendString:""];
②获取范围
NSRange range = [s1 rangeOfString:@"搜索字符串"];
③删除范围
[s1 deleteCharactersInRange:range];




三、NSArray和NSMutableArray
1、OC数组只能存放OC对象,不能存放非OC对象
2、创建OC数组
①NSArray *array = [NSArray array];空数组
②NSArray *array = [NSArray arrayWithOfObject:@"jack"];
  NSArray *array = [NSArray arrayWithOfObjects:@"jack", @"rose", nil];
③NSArray *array = @[@"jack", @"rose", @"123432"];//编译器特性
3、数组访问
1>访问array的元素个数
访问getter方法[array count] <=>array.count
2>访问数组元素
[array objectAtIndex:1];
array[1];
3>数组快速遍历
for(id obj in array)
①{
NSlog(@"%@",obj);
}

[array enumerateObjectsUsingBlock:^(id obj,NSUInterger index,BOOL *stop){


                                   }];
4、NSMutableArray
NSMutableArray *array = [[NSMutableArray arrayWithObjects:@"jack", @"rose"];;
1>添加元素
①[array addObject:@"jack"];
②错误:[array addObject:nil];
2>删除元素
①[array remveObjectAtIndex:0];
②[array remveObject:@"jack"];


四、NSSet和NSMutableSet
1、NSSet
①NSSet *s = [NSSet set];//空的
②NSSet *s1 = [NSSet setWithObjects:OC对象];
③随机拿出一个元素(因为没有顺序不想NSArray)
NSString *str = [s1 angObject];
2、NSMutableSet
1>添加元素
[s addObjcet:@"jack"];
2>删除元素
[s removeObject:(id)];
五、字典NSDictionary和NSMutableDictionary
1、NSDictionary
1>创建字典
①NSDictionary *dict = [NSDictionary dictionaryWithObject:(id) forKey:(id<NSCopying>)];
eg:
NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];
②多个键值对
NSDictionary *dict = [NSDictionary dictionaryWithObjects:(NSArray *) forKeys:(NSArray *)];
③蛋疼的创建方法和新特性
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
    value,key,...];
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
    @"jack",@"name"];
新特性:NSDictionary *dict = @{key:value,...};
eg:NSDictionary *dict = @{@"name":@"jack",@"address":@"北京"};


2>访问字典值
①传统:id = obj = [dict objectForKey:@"name"];
②新特新:id obj = dict[@"name"];
3、NSMutableDictionary
1>创建NSMutableDictionary
创建一个空的NSMutableDictionary
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
2>添加键值对
[dict setObject:@"jack" forKey:@"name"];
3>删除键值对
[dict removeObjectForKey:(id)];
4>字典打印
NSlog(@"%@",dict);
4、注意
1>@{@"name":@"jack"}返回的是NSDictionary不能调用NSMutableDictionary的方法。
错误写法:NSMutableDictionary *dict = @{@"name":@"jack"};
          [dict setObject:@"rose" forKey:@"name"];
5、遍历字典
1>用Block方法
[dict eumerateKeysAndObjectsUsingBlock:^(id key,id obj,BOOL *stop) {
                                         NSlog(@"%@ - %@",key,obj);
                                         }];
六、NSNumber,NSValue
1、将基本数据类型包装成对象
1>包装成字符串:@"10"
2>NSNumber
编译器特性@20 将20自动包装成一个对象
eg:@'a' @20 @(age)
2、NSValue可以包装任何基本数据类型成对象
①将结构体包装成Value对象
CGPoint p = CGPointMake(10,10);
NSValue *value = [NSValue valueWithPoint:p];
七、NSDate日期
1、创建一个时间变量
NSDate *date = [NSDate date];//打印当前语句的执行时间(格林制时间0时区时间)
NSDate *date1 = [NSDate dateWithTimeInterval:5 sinceDate:date];
2、日期格式化
NSDate *date = [NSDate date];


1>日期格式化类
①日期转成NSString
NSDateFormeatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"


NSString *str = [formatter stringFromDate:formatter];
NSlog(@"%@",date);
②将NSSring转换成日期
NSString *time = @"2014/09/10 18:56";
NSDateFormeatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd HH:mm";


NSDate *date = [formatter dateFromString:time];


NSlog(@"%@",date);
八、小零碎
1>结构体赋值
①只有NSRange赋值用NSMakeRange
③CGPoint,CGSize,CGRect赋值为CGPoint/Size/RectMake
2>原点:CGPointZero即(0,0)
  CGSizeZero,CGRectZero
3>CG是指CoreGraphic框架,要使用CG开头的有些函数,需要包含此框架,其中有这些函数的实现,Foundation框架中有函数声明。
4>用到中文就可以使用NSUTF8StringEncoding
5>URL:资源路径
①格式
协议头://路径
file://
ftp://
http://
6>提供类方法快速返回对象。
7>系统自带的对象方法都有一个与之对应的类方法,以便快速返回对象;而且通常类方法名以类名开头
eg:+ (id)URLWithString:(NSString *)
   + (id)stringWithContentsOfURL:(NSURL *) encoding:(NSStringencoding *) error:nil+;
   + (id)fileURLWithPath:(NSString *);
8>NSMutableString/Array/Dictionary与NSString/Array/Dictionary的子类
9>NSArray *array = [NSArray arrayWithOfObjects:@"jack", @"rose", nil];
其中的nil是数组结束的标记。
10>访问array的元素个数
访问getter方法[array count] <=>array.count
11>访问数组元素
[array objectAtIndex:1];
array[1];//编译器特性
12>数组创建
NSArray *array = @[@"jack", @"rose", @"123432"];//编译器特性
13>@[]:只用于定义不可变数组。
14>NSSet和NSArray对比
①都是集合,都能存放多个对象,而且只能存放对象,不能存放非OC对象。
②都有一个可变子类,本身不可变。
③NSSet无序,NSArray有序。
13>NSDictionary新特性
①初始化:NSDictionary *dict = @{key:value,...};
eg:NSDictionary *dict = @{@"name":@"jack",@"address":@"北京"};
②访问:id obj = dict[@"name"];
15>一个Key只能对应一个值。
16>
创建不可变数组:@[];
字典数组:@[@{},@{},@{}...]
创建不可变字典:@{};
17>NSSet和NSDictionary无序的只有NSArray有序
18>
NSlog(@"%@",person[1][@"qq"]);
19>NSNumber编译器特性自动包装基本(数字)数据类成对象
①@基本数据类型eg:@10,@'a'
②@(变量名)eg:@(age)
③NSValue可以包装任何基本数据类型成对象
将结构体包装成Value对象
CGPoint p = CGPointMake(10,10);
NSValue *value = [NSValue valueWithPoint:p];
④将对象转成基本数据类型
int d = [(NSNumber *) intValue];
19>NSDate日期(需掌握日期格式化)

NSDate *date = [NSDate date];//打印当前语句的执行时间(格林制时间0时区)

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------详细请查看:www.itheima.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值