黑马程序员——OC学习之Foundation框架常用类的常用方法
来源:互联网 发布:学it有前途吗 编辑:程序博客网 时间:2024/05/16 07:50
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
Foundation框架中常用对象有
一.常用结构体
NSRange(location length) //表示范围
NSPoint\CGPoint //表示坐标
NSSize\CGSize、 //表示大小
NSRect\CGRect //表示位置和尺寸
二.oc字符串对象NSString和它的可变大小的子类NSMutableString;
三.oc集合类NSArray,NSSet,NSDictionary以及它们的可变大小的子类NSMutableArray, NSMutableSet, NSMutableDictionary;
四.还有NSNumber,NSValue,NSDate这几个。
下面一个一个介绍它们的常用方法。
一.常用结构体
1.NSRange:用来表示范围
typedefstruct _NSRange {
NSUIntegerlocation; //表示起始位置
NSUIntegerlength; //表示长度
} NSRange;
创建一个对象:NSRange range = NSMakeRange(10, 5);它不是对象,因此是使用c语言的方式通过函数创建而非通过类的方法,该对象可以用在表示字符串中的一段范围的字符上。
2.NSPoint\CGPoint:表示一个点坐标
typedefstruct _NSPoint {
CGFloatx;
CGFloaty;
} NSPoint;
structCGPoint {
CGFloatx;
CGFloaty;
};
typedef struct CGPointCGPoint;
可以看出NSPoint\CGPoint是一样的,只是属于不同的框架,NSPoint是Foundation框架内容,CGPoint是CoreGraphics框架的内容,由于CGPoint有跨平台的特性,因此用得更多,以下的几个结构体也是如此。
创建方法:
CGPoint p1 = NSMakePoint(10, 10);
NSPoint p2 = CGPointMake(20, 20); //更加通用。
3. NSSize\CGSize:表示尺寸大小
structCGSize {
CGFloatwidth;
CGFloatheight;
};
typedef struct CGSizeCGSize;
创建方法;
CGSize s1 = CGSizeMake(10, 10);
NSSize s2 = NSMakeSize(20, 20);
4. NSRect\CGRect //表示位置和尺寸
typedefstruct _NSRect {
NSPointorigin;
NSSizesize;
} NSRect;
structCGRect {
CGPointorigin;
CGSizesize;
};
typedef struct CGRectCGRect;
创建方法:
NSRect r1 = NSMakeRect(0, 0, 10, 10);
CGRect r2 = CGRectMake(10,10,20,20);
如上是通过函数创建,也可以通过如下方式创建:
NSRange range2 = {10,10};
CGPoint p3 = {30,30};
CGSize s3 = {30,30};
CGRect r3 = {0,0,10,10};
CGRect r4 = {{0,0},{10,10}};
CGRect r5 ={p1,s1};
CGRect r6 = {CGPointZero,CGSizeMake(10,10)}; //CGPointZero就表示(0,0)坐标原点
但是这种方式意义不太明确,不建议使用。
二.oc字符串对象NSString和它的可变大小的子类NSMutableString;
NSString一旦创建了就不可改变,无论是长度还是内容,NSMutableString则可以改变其长度和内容。
创建方法:
NSString *str1 = @"Hello World”;
NSString *str2 = [[NSStringalloc]initWithString:@"haha"];
NSString *str3 = [[NSStringalloc]initWithFormat:@"age = %d",13];
从c字符串创建oc对象字符串
NSString *str4 = [[NSStringalloc]initWithUTF8String:"C字符串!"];
oc转c字符串
constchar *chars= [str4 UTF8String];
//还可以从文件读取,并创建字符串
NSString *str5 = @"/Users/apple/Desktop/1.txt";
NSString *str6 = [[NSStringalloc]initWithContentsOfFile:str5encoding:NSUTF8StringEncodingerror:nil];
//将字符串转换为URL地址
NSURL *url = [[NSURLalloc]initWithString:@"file:///Users/apple/Desktop/1.txt"];
NSURL *url2 = [NSURLfileURLWithPath:@"/Users/apple/Desktop/1.txt"];
//从URL读取内容,并创建新的字符串str7
NSString *str7 = [[NSStringalloc]initWithContentsOfURL:urlencoding:NSUTF8StringEncodingerror:nil];
NSString创建字符串的方法十分多,可以从各种基本数据类型转换而来,也可以从结构体转而来,还能读取各种URL地址和文件的资源得到,其方法大多以init开头。
把字符串写入到文件或者URL地址中
//把字符串写入到文件
NSString *path = @"/Users/apple/Desktop/a.txt";
[@"apple \n black" writeToFile:path atomically:YESencoding:NSUTF8StringEncoding error:nil];
//把字符串写入到URL
NSURL *url = [NSURL URLWithString:@"file:///Users/apple/Desktop/a.txt"];
[@"good" writeToURL:url atomically:YESencoding:NSUTF8StringEncoding error:nil];
字符串剪切:
-(NSString *)substringFromIndex:(NSUInteger)from;从指定index处剪切字符串到末尾,包含index处字符
-(NSString *)substringToIndex:(NSUInteger)to;从开始处剪切字符串到index处,不包含index处字符
- (NSString *)substringWithRange:(NSRange)range;根据传递的范围截取字符串。
字符串拼接:
NSString *str2 = [str1 stringByAppendingString:str3];
分割字符串:
NSArray *arr1 = [str2 componentsSeparatedByString:@"_"];用指定字符串分割目标字符串。
NSArray *arr2 = [str2componentsSeparatedByCharactersInSet:(NSCharacterSet *)]; //用指定字符集分割字符串
获取单个字符:
unichar c = [str2 characterAtIndex:1];
比较字符串:
NSComparisonResult result1 = [str2caseInsensitiveCompare:str3];
NSComparisonResult result2 = [str2compare:str3options:NSLiteralSearchrange:NSMakeRange(0,5)locale:nil];
其中NSComparisonResult是枚举
enum{
NSOrderedAscending= -1,
NSOrderedSame,
NSOrderedDescending
};
除此之外还有许多is开头的方法如:isEqual: isGreaterThan: 等等也可以用于比较,返回的是bool类型,不再是NSComparisonResult类型。
如上是NSString对象的基本方法,NSMutableSting是其子类,包含它的所有方法还有自己的方法:
NSMutableString *mstr1 =[[NSMutableStringalloc]initWithString:@"abc"];
[mstr1 appendString:@"123"]; //最后面添加字符串
[mstr1 deleteCharactersInRange:NSMakeRange(0,3)];//删除指定范围的字符串
[mstr1 insertString:@"xyz"atIndex:1];//再指定位置插入字符串。
字符串的函数特别多,也都十分实用,但是如上几个是常用字符串,掌握这些就能应付基本的字符操作了。
三.oc集合类NSArray,NSSet,NSDictionary以及它们的可变大小的子类NSMutableArray, NSMutableSet, NSMutableDictionary
这些oc集合类只能存放oc对象,不能存放基本数据类型和结构体,共用体
1.NSArray是有序不可变集合
NSArray的常用方法:
+(id)arrayWithObjects:obj1,obj2,...nil //创建一个新的数组,obj1,obj2,.., 以nil结束。+ (id)arrayWithObjects:(const id [])objects count:(NSUInteger)count//在对象数组中选取前count个对象元素组成NSArray对象。-(BOOL)containsObject:obj //确定数组中是否包含对象obj-(NSUInterger)count //数组中元素的个数-(NSUInterger)indexOfObject:obj //第一个包含obj元素的索引号-(id)ObjectAtIndex:i //存储在位置i的对象
快速创建对象一般使用:
NSArray *arr = @[@1,@2,@3]; //oc的编译器特性。
NSMutableArray是NSArray的子类,可以动态增加元素,常用方法:
+(id)array //创建一个空数组+(id)arrayWithCapacity:size //创建一个容量为size的数组-(id)initWithCapacity:size //初始化一个新分配的数,指定容量为size-(void)addObject:obj //将obj增加到数组中-(void)insertObject:obj atIndex:i //将obj插入数据的i元素-(void)replaceObjectAtIndex:i withObject:obj //用obj替换第i个索引的对象-(void)removeObject:obj //从数组中删除所有是obj的对象-(void)removeObjectAtIndex:i //从数组中删除索引为i的对象-(void)sortUsingSelector:(SEL)selector //用selector指示的比较方法进行排序
2. NSSet是无序不可变集合
NSSet的常用方法:
+(id)setWithObjects:obj1,obj2,obj3,...nil //使用一组对象创建新集合-(id)initWithObjects:obj1,obj2,...nil //使用一组对象初始化新分配的集合-(NSUInterger)count //返回集合的成员个数-(BOOL)containsObject:obj //确定集合是否包含对象obj-(BOOL)member:obj //确定集合是否包含对象obj-(BOOL)isSubsetOfSet:nsset //判断是否是一个集合nsset的子集-(BOO)isEqualToSet:nsset //判断两个集合是相等
NSMutableSet常用方法:
+(id)setWithCapacity:size//类方法,返回一个给定容量的NSMutableSet集合-(id)initWithCapacity:size//对象方法,返回一个给定容量的NSMutableSet集合-(void)addObject:obj //增加一个对象到集合中-(void)removeObject:obj //从集合中删除对象obj-(void)removeAllObjects //删除集合中所有的对象
3. NSDictionary是oc中的键值对集合,对应java中的map。
NSDictionary常用方法:
+(id)dictionaryWithObjectsAndKeys: obj1,key1,obj2,key2,...nil //顺序增加对象和键值来创建一个字典。-(id)initWithObjectsAndKeys:obj1,key1,obj2,key2,...nil //初始化一个新分配的字典,顺序增加对象和值-(unsigned int)count //返回字典中键值对数-(id)objectForKey:key //返回指定key的值
快速创建一般使用:
NSDictionary *dic = @{@1:@"a",@2:@"b",@3:@"c"}; //oc的编译器特性。
NSMutableDictionary常用方法:
+(id)dictionaryWithCapacity:size //创建一个size大小的可变字典-(id)initWithCapacity:size //初始化一个size大小的可变字典-(void)removeAllObjects //删除字典中所有元素-(void)removeObjectForKey:key //删除字典key位置的元素-(void)setObject:obj forKey:key //增加(obj,key)到字典中,若key已经存在,则替换值为obj
如上是对三大集合的基本操作方法的小结,下面开始学如何遍历这些集合元素:
a.通过for循环遍历NSArray和NSDictionary:
NSArray *arr = @[@1,@2,@3];for(int i = 0;i < arr.count;i++){ NSLog(@"%@",arr[i]); }NSDictionary *dic = @{@1:@"a",@2:@"b",@3:@"c"};NSArray *keys = [dic allKeys];//获得所有key的集合for(int i = 0;i < dic.count;i++){ NSLog(@"%@,%@",keys[i],[dic objectForKey:keys[i]]);}
b.使用block代码块遍历NSArray和NSDictionary:
NSArray *arr = @[@1,@2,@3];[arr enumerateObjectsUsingBlock: ^(id obj, NSUInteger idx, BOOL *stop) { NSLog(@"index = %ld,obj = %@",idx,obj);}];NSDictionary *dic = @{@1:@"a",@2:@"b",@3:@"c"};[dic enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { NSLog(@"key = %@,obj = %@",key,obj);}];
四.NSNumber,NSValue,NSDate
集合对象可以存放oc对象,但是基本数据类型,结构体,枚举,共用体则无法存放,基本数据类型可以通过转换成NSNumber*类型存放在集合中。
1.基本数据类型转换成NSNumber:
NSNumber *age = [NSNumbernumberWithInt:15];
或者 NSNumber *age = @16; //推荐写法。
其它基本数据类型也是这么转。
方法有如下:
2. NSNumber转换成基本数据类型:
int age2 = [age1 intValue];
或者 int age3 = age1.intValue;
其它基本数据类型也可以这么转:
3.如果要将结构体转换成可以存放在oc集合中的对象可以使用NSValue,NSValue是NSNumber的父类
以下分别是NSRange,NSPoint,NSSize,NSRect在结构体和oc对象之间转换的方式。
NSValue *rangeValue = [NSValue valueWithRange:NSMakeRange(10, 10)];NSRange range = [rangeValue rangeValue];NSValue *pointValue = [NSValue valueWithPoint:CGPointMake(10, 10)];CGPoint point = [pointValue pointValue];NSValue *sizeValue = [NSValue valueWithSize:CGSizeMake(10, 10)];CGSize size = [sizeValue sizeValue]; NSValue *rectValue = [NSValue valueWithRect:CGRectMake(0, 0, 10, 10)];CGRect rect = [rectValue rectValue];
4.NSDate是用来表示日期格式的对象,对于输出我们想要的日期格式十分方便。
使用示例如下:
创建一个日期对象
NSDate *date1 = [NSDate date];//当前时间NSDate *date2 = [[NSDate alloc] init];//当前时间NSDate *date3 = [NSDate dateWithTimeInterval:60*60*24 sinceDate:date1]; //date3比date1晚一天,中间的时间参数单位是秒,不是毫秒!
要格式化日期输出还需要一个NSDateFormatter对象
NSDateFormatter *format = [[NSDateFormatter alloc] init];format.dateFormat = @"yyyy-MM-dd HH:mm:ss"; //设置成想要的格式NSLog(@"%@",[format stringFromDate:date1]); //将日期按照设定的格式输出。
也可以将字符串按照给定的格式转换成日期对象
NSString *strdate1 = @"1992-01-01 23:01:01";NSDate *date5 = [format dateFromString:strdate1];
- 黑马程序员——OC学习之Foundation框架常用类的常用方法
- 黑马程序员——OC基础学习(六)---Foundation框架的常用类
- 黑马程序员——OC学习笔记08 Foundation框架常用的几个结构体和类。
- 黑马程序员-OC语言-Foundation框架中的常用结构体
- 黑马程序员——OC笔记之Foundation框架上
- 黑马程序员——OC笔记之Foundation框架下
- 黑马程序员——oc之Foundation框架
- OC学习:Foundation框架中的常用类
- 黑马程序员-Foundation框架常用类小结
- 【黑马程序员】OC-Foundation框架—NSMutableString
- 黑马程序员-OC学习笔记-----Foundation框架(常用结构体和NSString)
- 黑马程序员——入学Blog10----Foundation框架常用的结构体与类
- 17、黑马程序员-Foundation框架中一些常用的类
- 黑马程序员学习笔记-OC之foundation框架
- 黑马程序员-----oc语言学习笔记之foundation框架-NSString
- 黑马程序员--IOS学习笔记(Foundation框架中常用的类)
- 黑马程序员——Foundation框架——NSString常用方法
- 黑马程序员——Foundation框架——NSMutableString常用方法
- 学好实验从仿真实验开始
- 日经社説 20141219 子ども標的の残虐テロを憂う
- 二十岁出头,你一无所有,但你却拥有一切 【献给像我一样20多岁的年轻人】
- rowid含义
- redis命令
- 黑马程序员——OC学习之Foundation框架常用类的常用方法
- cocos2d-x-3.3rc2-005 cocos中的智能指针
- 刚出生的宝宝有哪些问题要注意的
- C++头文件crtdbg.h详解
- qt windows分发工具使用
- QT 创建鼠标右键菜单
- pring中@Autowired注解、@Resource注解的区别
- Python IDLE 清屏问题
- Redis命令总结