黑马程序员技术交流社区
标题:
Foundation框架自己总结的知识点
[打印本页]
作者:
vvvisa
时间:
2016-4-2 21:41
标题:
Foundation框架自己总结的知识点
手打不易,如有不足还请指教
/**************Foundation框架****************/
//结构体
* NSRange:
1>NSRange r = NSMakeRange(2,4);
NSRange r2 = {.location = 2,.length = 4};
2>rangeOfString:查找某个字符串在另一个字符串中的位置
NSString *str = @"I love OC";
NSRange range = [str rangeOfString:@" lov"];
如果找不到的话,.location = NSNotFound = -1,.length = 0;
*CGPoint\NSPoint:表示平面中的一个坐标
1>接受两个double参数
CGPoint p = CGPointMake(0,0);
NSPoint p2 = NSMakePoint(0,0);
*CGSize\NSSize:表示UI元素的尺寸
1>接受两个double参数
CGSize s = CGSizeMake(100,50);
NSSize s2 = NSMakeSize(100,50);
*CGRect\NSRect:表示一个UI元素的位置和尺寸,相当于CGPoint和CGSize
1>CGRect r = CGRectMake(0,0,100,50);
CGRect r2 = {CGPointZero,CGSizeMake(100,50)};
*CGPointZero:表示原点
1>CGSizeZero
2>CGRectZero
3>这些都包含在CoreGraphics框架中
*NSStringFromPoint
1>将这个结构体转化为字符串
NSString *str = NSStringFromPoint(CGPointMake(0,0));
2>NSStringFromSize
NSStringFromRect
*CGPointEqualToPoint:对比两个点是否相同
1>返回一个BOOL类型
BOOL b = CGPointEqualToPoint(CGPointZero,CGPointMake(0,0));
*CGRectContainsPoint:判断一个点是不是在某个矩形范围内
1>返回BOOL类型
BOOL b = CGRectContainsPoint(CGRectMake(50,40,100,100),CGPointMake(60,40));
//常用类
*NSString
1>字符串的创建:
NSString *str = @"visa";
NSString *str2 = [[NSString alloc] initWithString:@"visa"];
每一个对象方法一般都有一个类方法与之对应
2>拼串:
<1>NSString *str = [NSString stringWithFormat:@"age is %d",10];
<2>也可用作将基本数据类型转为一个字符串:
NSString *str = [NSString stringWithFormat:@"%d",10];
3>OC字符串和C字符串的转换
<1>NSString *s = [NSString stringWithUTF8String:"visa"];
<2>const char *c = [@"visa" UTF8String];
4>将字符串转为URL:
<1>NSURL *url = [NSURL URLWithString:@"file:///Users/visa/Desktop/abc.txt"];
// file://是协议头
<2>NSURL *url2 = [NSURL fileURLWithPath:@"/Users/visa/Desktop/abc.txt"];
5>将URL中的所有内容转为字符串
<1>NSString *str = [NSString stringWithContentsOfFile:@"/Users/visa/Desktop/abc.txt" encoding:NSUTF8StringEncoding error:nil];
NSUTF8StringEncoding:用到中文时就要使用这种编码
6>将字符串写入URL
<1>[@"visa" writeToFile:@"/Users/visa/Desktop/abc.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
automically:原子性操作,如果是YES,那么文件写入过程中如果写入失败,文件就不会被创建
相应的,也会有writeToURL这个方法
7>characterAtIndex
<1>取出这个位置对应的字符,是个对象方法
<2>返回值是unichar类型
unichar c = [@"visa" characterAtIndex:2];
8>componentsSeparatedByString:
<1>用字符串来分割另一段字符串
<2>返回一个NSArray数组
NSArray array = [str componentsSeparatedByString:@"\n"];
9>替换字符串:
NSString *str2 = [str stringByReplacingCharactersInRange:NSMakeRange(4,53) withString:@"abc"];
*NSMutableString NSString的子类
1>不可变字符串
不能这样创建 NSMutableString *str = @"visa"
2>拼接一个字符串拼接到某个字符串的后面
NSMutableString *str = [str stringWithFormat:@"age is 10"];
[str appendString:@" 11 12"];
NSString *s = @"visa";
NSString *s2 = [s stringByAppendingString:@"wz"];
3>删除一段:
NSMutableString *s = [s stringWithFormat:@"age is 10"];
NSRange range = [s rangeOfString:@"is"];
[s deleteCharactersInRange:range];
作者:
vvvisa
时间:
2016-4-2 21:42
//集合类
*NSArray
1>不可变数组
2>只能存放OC对象,不能存放基本数据类型,如int,double,struct,enum等
3>不能存放nil,因为nil是NSArray数组结束的标志
4>NSArray的创建:
NSArray *array = [NSArray arrayWithObject:@"visa"];
NSArray *array2 = [NSArray arrayWithObjects:@"visa",@"jack",[[Person alloc] init],nil];
5>快速创建一个NSArray对象:
NSArray *array = @[@"visa",@"jack",@"rose"];
<1>@[]这是一种编译器的特性
<2>@[]只能创建NSArray,不能创建NSMutableArray
6>NSArray的元素个数
NSLog(@"%ld",array.count);
7>NSArray的元素访问
<1>NSLog(@"%@",[array objectAtIndex:1]);
<2>NSLog(@"%@",array[1]);
8>找出某元素在数组中的位置:
[array indexOfArray:@"visa"];
9>遍历数组
<1>for(id obj in array)
{
NSUInteger i =[array indexOfArray:obj];
NSLog(@"%ld ---%@",i,obj);
}
id obj 代表着数组中的每一个元素
<2>[array enumerateObjectsUsingBlock:
^(id obj, NSUInteger idx, BOOL *stop)
{
NSLog(@"%ld-----%@",idx,obj);
}]
定义一个BOOL类型的指针是因为block中是值传递,不能修改参数的数值,只好传一个地址,通过指针来间接操作
*NSMutableArray NSArray的子类
1>不可变数组
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"visa",@"jack",@"rose",@"visa",nil];
2>添加元素
[array addObject:[[Person alloc] init]];
3>删除元素
<1>[array removeAllObjects];
<2>[array removeObject:@"jack"];
<3>[array removeObjectAtIndex:1];
<4>[array removeObject:@"visa" inRange:NSMakeRange(3,1)]; 在range范围内查找特定元素进行删除
<5>[array removeObjectsInRange:NSMakeRange(1,3)];
*NSSet
1>和NSArray基本一样,但是元素的排列没有顺序
2>创建NSSet
NSSet *s = [NSSet setWithObjects:@"visa",@"jack",@"rose",nil];
3>元素的取用(只能随机拿出元素)
NSString *str = [s anyObject];
4>因为没有顺序,所以没有.conut
*NSMutableSet NSSet的子类
1>创建
NSMutableSet *s = [NSMutableSet setWithObjects:@"visa",@"jack",@"rose",nil];
2>添加元素
[s addObject:@"123"];
3>删除元素
[s removeObject:@"visa"];
*NSDictionary
1>存储的是键值对:
key ------> value
注意:是无序的
2>创建
<1>NSArray *keys = @[@"name",@"address",@"qq"];
NSArray *objects = @[@"visa",@"太原",@"12345"];
NSDictionary *dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
<2>NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
@"visa",@"name",
@"太原",@"address",
@"12345",@"qq",nil];
<3>快速创建
NSDictionary *dict = @{@"name":@"visa",
@"address":@"太原",
@"qq":@"12345"};
3>按键寻值
<1>id obj = [dict objectForKey:@"address"];
<2>id obj = dict[@"address"];
4>dict.count返回的是键值对的个数
5>遍历
<1>NSArray *keys = [dict allKeys];
for(int i = 0;i < keys.count;i++)
{
NSString *key = keys[i];
NSString *value = dict[key];
NSLog(@"%@ ---- %@",key,value);
}
<2>[dict enumerateKeysAndObjectsUsingBlock:
^(id key,id obj,BOOL *stop){
NSLog(@"%@ ---- %@",key,obj);
}];
*NSMutableDictionary NSDictionary的子类
1>创建
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
2>添加键值对
[dict setObject:@"visa" forKeys:@"name"];
3>移除键值对
[dict removeObjectForKey:@"name"];
*NSFileManager
1>单例对象,整个程序运行期间这个类的对象只有一个,所以所有方法调用的对象都是这个对象
获得文件管理者:
NSFileManager *mgr = [NSFileManager defaultManager];
2>取出文件拓展名:(忽略大小写)
NSString *path = @"/Users/visa/Desktop/.txt";
NSString *extension = [[path pathExtension] lowercaseString];
3>用数组存储当前文件夹内的所有内容:
NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil];
*NSNmuber
1>将一个基本数据类型转换为一个OC对象
NSNmuber *num = [NSNmuber numberWithInt:10];
int a = [num intValue];
int b = [@"20" intValue];
2>快速转换:
@10;
@10.5;
@"a" 是NSString对象
@'a' 是NSNmuber对象
int age = 10;
@(age);
*NSValue
1>NSNmuber的父类,可以包装任何数据类型
NSValue *value = [NSValue valueWithPoint:CGPointMake(1,5)];
NSPoint p = [value pointValue];
*NSDate
1>创建
<1>NSDate *date = [NSDate date];
创建出的是0时区的时间
<2>NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date];
创建出的是比date晚5秒的NSDate对象
2>NSTimeInterval seconds = [date timeIntervalSince1970];
表示从1970年开始走过的秒数
3>[date2 timeIntervalSinceNow];
表示从当前时间和date2差的秒数
4>日期格式化,NSDate转为NSString
<1>NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSString *str = [formatter stringFromDate:[NSDate date]];
5>NSString转为NSDate
NSString *time = @"2011/12/2 11:12"
设置格式化
NSDate *date2 = [formatter dateFromString:time];
作者:
vvvisa
时间:
2016-4-2 21:59
都没有人回复的
作者:
vvvisa
时间:
2016-4-2 23:13
{:2_33:}{:2_34:}{:2_35:}
作者:
vvvisa
时间:
2016-4-3 00:54
Foundation框架还是比较繁琐的
作者:
vvvisa
时间:
2016-4-4 11:17
自己顶自己
作者:
UKnowINeedYou
时间:
2016-4-5 10:08
我来踩一下
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2