Foundation框架下的基本类
来源:互联网 发布:阿里云备案幕布电子版 编辑:程序博客网 时间:2024/05/17 18:15
Foundation框架下的基本类
NSValue/NSNumber
功能将OC和C语言当中的基本数据类型转换成实例对象,即将值类型转换成引用类型
OC和C中的基本数据类型 int a = 5; float b = 4.5; double c = 34.5545; char d = 'c';// CGPoint point = {3,5};// CGSize size = {30,47};// CGRect rect = {point,size}; CGPoint point = CGPointMake(3, 5); CGSize size = CGSizeMake(40, 60); CGRect rect = CGRectMake(3, 5, 40, 60); NSRange range = NSMakeRange(3, 7); NSEdgeInsets edgeInsets = NSEdgeInsetsMake(10, 10, 10, 10);
NSValue 为 NSNumber 的父类.
其中NSValue类可以将CGPoint
、CGSize
、CGRect
、NSRange
、NSEdgeInsets
转换成对象
NSValue *pointValue = [NSValue valueWithPoint:point]; NSValue *sizeValue = [NSValue valueWithSize:size]; NSValue *rectValue = [NSValue valueWithRect:rect]; NSValue *rangeValue = [NSValue valueWithRange:range]; NSValue *edgeInsetsValue = [NSValue valueWithEdgeInsets:edgeInsets];
其中NSNumber类可以将int
、float
、 double
、 char
、BOOL
等C中基本数据类型转换成对象
NSNumber *intNumber = [NSNumber numberWithInt:1]; NSNumber *integerNumber = [NSNumber numberWithInteger:12]; NSNumber *floatNumber = [NSNumber numberWithFloat:12.3]; NSNumber *doubleNumber = [NSNumber numberWithDouble:12.455]; NSNumber *charNumber = [NSNumber numberWithChar:'a']; NSNumber *boolNumber = [NSNumber numberWithBool:YES];
我们将C和OC中的基本数据类型(值类型)转换成对象(引用类型)的过程,叫做封装。相对应的,也有一个将对象转变成基本数据类型,此过程叫做拆包。
//拆包CGPoint point1 = [pointValue pointValue]; CGSize size1 = [sizeValue sizeValue]; CGRect rect1 = [rectValue rectValue]; NSRange range1 = [rangeValue rangeValue]; NSEdgeInsets edgeInsets1 = [edgeInsetsValue edgeInsetsValue]; int a1 = [intNumber intValue]; NSInteger a2 = [integerNumber integerValue]; float a3 = [floatNumber floatValue]; double a4 = [doubleNumber doubleValue]; char a5 = [charNumber charValue]; BOOL a6 = [boolNumber boolValue]
NSString / NSMutableString
OC中的字符串具有强大的功能,即封装性极强,我们只需要找到对应API,就可以对字符串做相应操作。OC中字符串分为 `不可变字符串` 和 `可变字符串`,其中`可变字符串`是`不可变字符串`的子类.在iOS开发中,字符串通常用作显示文本,即作为`UILabel`、`UITextFeild`等一些`UIKit`框架下控件的显示文本
NSString 不可变字符串
初始化字符串
1.快速初始化
NSString *string1 = @"bokanwisdom";
2.格式化的方式初始化字符串
NSString *string4 = [NSString stringWithFormat:@"%d%f%@",3,3.14,@"dajiahao"];
note:对于用格式化方式来构造字符串实例来讲,其作用并不是仅仅来构造一个字符串对象,它还可以用来做字符串拼接
3.从本地文件中读取字符串
NSString *string7 = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
NSString *string8 = [NSString stringWithContentsOfFile:path usedEncoding:&encoding error:&error];
4.从网络中读取一个字符串
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];NSString *string9 = [NSString stringWithContentsOfURL:url encoding:4 error:&error];
字符串的操作
1.字符串长度
NSUInteger length = string10.length;
2.字符串的截取
NSString *subStr1 = [string10 substringToIndex:8]; NSString *subStr2 = [string10 substringFromIndex:8]; NSString *subStr3 = [string10 substringWithRange:NSMakeRange(8, length-8)];
3.字符串比较
==
:表示两个字符串内容和指针都相同
if (subStr2 == subStr3) { //内容和指针都相等时,才成立 NSLog(@"subStr2和subStr3相等"); }else{ NSLog(@"subStr2和subStr3不相等"); }
[subStr2 isEqualToString:subStr3]
:表示两个字符串内容是否相同
if ([subStr2 isEqualToString:subStr3]) { NSLog(@"subStr2和subStr3内容相同"); }else{ NSLog(@"subStr2和subStr3内容不相同"); }
- 根据字符串拿到对应的range
NSRange range = [string10 rangeOfString:@"人家"];
5.判断字符串中是否有xx前缀或xx后缀
NSString *string11 = @"www.baidu.com"; if ([string11 hasPrefix:@"http://"]) { NSLog(@"含有此前缀"); }else{ NSLog(@"不含有此前缀"); } NSString *string12 = @"sdfdf.jpg"; if([string12 hasSuffix:@".jpg"]||[string12 hasSuffix:@".png"]){ NSLog(@"含有此后缀"); }
6.字符串拼接
NSString *string13 = [@"http://" stringByAppendingString:string11]; NSLog(@"string13 = %@",string13); NSString *domainStr = @"http://baidu.com"; NSString *xxx = @"login"; //http://baidu.com/login NSString *string14 = [NSString stringWithFormat:@"%@/%@",domainStr,xxx]; NSLog(@"string14 = %@",string14); NSString *string15 = [domainStr stringByAppendingPathComponent:xxx]; NSLog(@"string15 = %@",string15); //http://b.hiphotos.baidu.com/image/pic/item/e4dde71190ef76c666af095f9e16fdfaaf516741.jpg NSString *imgPath = @"http://b.hiphotos.baidu.com/image/pic/item/e4dde71190ef76c666af095f9e16fdfaaf516741.jpg"; imgPath = [imgPath lastPathComponent]; NSLog(@"imgPath = %@",imgPath); path = [path lastPathComponent]; NSLog(@"path = %@",path); NSString *theImageName = @"lishucheng"; theImageName = [theImageName stringByAppendingPathExtension:@"png"]; NSLog(@"theImageName = %@",theImageName);
NSMutableString 可变字符串
可变字符串NSMutableString
是继承于不可变字符串NSString
。即意味着前面所讲关于不可变字符串的操作都适用于可变字符串。
1.初始化方法
NSMutableString *mString0 = [NSMutableString stringWithString:@"nihao"]; NSMutableString *mString1 = [NSMutableString stringWithFormat:@"hello"]; NSMutableString *mString2 = [NSMutableString stringWithContentsOfFile:@"" encoding:4 error:nil]; NSMutableString *mString3 = [NSMutableString stringWithContentsOfURL:[NSURL URLWithString:@""] encoding:4 error:nil]; //可变字符串独特初始化方式,初始化一个空间为100的空的可变字符串 NSMutableString *mString4 = [[NSMutableString alloc] initWithCapacity:100];
2.操作(不可变字符串的API,可变字符串都具备)
1.增加 //在指定位置去插入一段字符串 [targetString insertString:@",你是sb么,有点意识,OK?" atIndex:targetString.length]; NSLog(@"targetString = %@",targetString); //在字符串的末尾添加一个字符串 [targetString appendString:@"不想玩,滚!"]; NSLog(@"targetString = %@",targetString); //在字符串的末尾添加多个字符串 [targetString appendFormat:@"%@%@",@"fuck!",@"your mom boom boom boom"];2.替换range = [targetString rangeOfString:@"sb"]; [targetString replaceCharactersInRange:range withString:@"**"];3.删除 [targetString deleteCharactersInRange:NSMakeRange(0, 3)];
NSArray / NSMutableArray
在OC中,我们用 NSArray
类和 NSMutableArray
类来表示数组,其中NSArray
类是 NSMutableArray
类的父类。在OC中,我们的数组是有序的 对象
的集合,即我们的数组只能存储 对象
。 在OC中我们的数组中元素类型不能是 int
、float
、CGPoint
等类型。
NSArray(不可变数组)
1.初始化方法
//创建一个空的不可变的数组 NSArray *array1 = [[NSArray alloc] init]; NSArray *array2 = [NSArray array]; //创建一个里面只有一个元素的不可变数组 NSArray *array3 = [NSArray arrayWithObject:@"zhoudu"]; //创建一个里面有多个元素的不可变数组 NSArray *array4 = [NSArray arrayWithObjects:@"zhoudu",@"xingzhenyu",@"panzhijing",@"gugenggeng", nil]; //新语法 NSArray *array5 = @[@"zhoudu"]; NSArray *array6 = @[@"zhoudu",@"xingzhenyu",@"panzhijing",@"gugenggeng"]; //从另外一个数组中创建一个数组 NSArray *array7 = [NSArray arrayWithArray:array2]; //从本地文件中读取数组 NSArray *array8 = [NSArray arrayWithContentsOfFile:@""]; //从网络文件中读取一个数组 NSArray *array9 = [NSArray arrayWithContentsOfURL:[NSURL URLWithString:@""]];
2.数组元素个数
NSUInteger count = array6.count;
3.访问数组元素
NSString *str = [array6 objectAtIndex:0]; //新语法访问数组中的元素 NSString *str2 = array6[1]; //通过数组的元素找下标 NSUInteger index = [array6 indexOfObject:@"zhoudu"];
4.判断数组中是否存在某个元素
BOOL flag = [array6 containsObject:@"zhoudu"];
5.向不可变数组中增加一个元素或者,生成一个新的数组
NSArray *newArray1 = [array6 arrayByAddingObject:@"方剑青"]; NSArray *newArray2 = [array6 arrayByAddingObjectsFromArray:array6];
NSMutableArray(可变数组)
NSMutableArray
为NSArray
的子类,即上述使用API对于可变数组来讲都适用
1.初始化方法
NSMutableArray *mArray1 = [NSMutableArray array]; NSMutableArray *mArray2 = [NSMutableArray arrayWithObject:@"1"]; NSMutableArray *mArray3 = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4", nil]; NSMutableArray *mArray4 = [NSMutableArray arrayWithArray:mArray2]; //可变数组独有的初始化方法 NSMutableArray *mArray5 = [NSMutableArray arrayWithCapacity:10]; NSMutableArray *mArray6 = [NSMutableArray arrayWithContentsOfFile:@""]; NSMutableArray *mArray7 = [NSMutableArray arrayWithContentsOfURL:[NSURL URLWithString:@""]];
2.操作
//增加 //在数组的末尾增加一个元素 [mArray3 addObject:@"5"]; //在数组的指定位置增加一个元素 [mArray3 insertObject:@"vincent" atIndex:3]; //替换,将数组指定位置上的元素替换成用户想要元素 [mArray3 replaceObjectAtIndex:2 withObject:@"sb"]; //交换,将数组指定位置上的两个元素交换位置 [mArray3 exchangeObjectAtIndex:1 withObjectAtIndex:4]; //删除 //删除指定元素 [mArray3 removeObject:@"1"]; //删除指定位置上的元素 [mArray3 removeObjectAtIndex:2]; //删除数组中最后一个元素 [mArray3 removeLastObject]; for (NSString *ele in mArray3) { NSLog(@"ele = %@",ele); } //删除数组中所有元素 [mArray3 removeAllObjects];
3.数组的遍历
//快速枚举 NSMutableArray *marray = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6", nil]; for (NSString *element in marray) { NSLog(@"element = %@",element); }//使用系统提供的枚举类 NSEnumerator NSEnumerator *enumerator = [marray objectEnumerator]; NSString *ele; while (ele = [enumerator nextObject]) { NSLog(@"ele = %@",ele); }
note
:当遍历可变数组时,不可修改可变数组
NSDictionary /NSMutableDictionary
1.概念:字典是关键字key
及其定义的值value
所构成的集合,即它是由key-value组成的键值队的集合。通常来讲,key
一般是NSString
类型,value
是OC中任意的对象。对于字典来讲,我们就是通过key
来访问value
2.为什么在有了数组后,还需要有字典呢?在有大量的数据或频繁的查找信息,使用字典效率更高。因为字典是采用键查询的优化存储方式。
3.在OC中我们使用NSDictionary
和NSMutableDictionary
来表示字典,其中NSMutableDictionary
是NSDictionary
子类。
4.字典初始化
//创建一个空的字典 NSDictionary *dictionary1 = [[NSDictionary alloc] init]; NSDictionary *dictionary2 = [NSDictionary dictionary]; //创建一个键值队的字典 NSDictionary *dictionary3 = [NSDictionary dictionaryWithObject:@"vincent" forKey:@"name"]; //创建多个键值队的字典 NSDictionary *dictionary4 = [NSDictionary dictionaryWithObjectsAndKeys:@"vincent",@"name",@24,@"age",@"广州",@"address", nil]; //value在前,key在后,value和key要成双出现 NSLog(@"dictionary4 = %@",dictionary4); //根据一个字典创建一个字典 NSDictionary *dictionary5 = [NSDictionary dictionaryWithDictionary:dictionary4]; //新语法创建字典 NSDictionary *dictionary6 = @{}; NSDictionary *dictionary7 = @{@"name":@"vincent"}; NSDictionary *dictionary8 = @{@"name":@"vincent",@"age":@24,@"address":@"广州"}; NSDictionary *dictionary11 = [NSMutableDictionary dictionaryWithContentsOfFile:@""]; NSDictionary *dictionary12 = [NSMutableDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:
5.键值对数量
NSUInteger count = dictionary4.count;
6.如何访问字典中元素
//通过key来访问字典中对应的值 NSString *name = [dictionary4 objectForKey:@"name"]; //新语法 NSString *newName = dictionary4[@"name"]; //如何遍历字典中的所有值? //表示字典中所有的key NSArray *keysArray = dictionary4.allKeys; //表示字典中所有的value NSArray *valuesArray = dictionary4.allValues; for (NSString *key in keysArray) { NSLog(@"%@ : %@",key,dictionary4[key]); } enumerator = dictionary4.keyEnumerator; NSString *key; while (key = [enumerator nextObject]) { NSLog(@"%@ : %@",key,dictionary4[key]); }
7.在字典中不能够存在相同key
,能够存在相同的value
8.在字典中键值对是无序的
NSMutableDictionary(可变字典)
1.初始化方法
//1.初始化方法 NSMutableDictionary *mdictionary1 = [NSMutableDictionary dictionary]; NSMutableDictionary *mdictionary2 = [NSMutableDictionary dictionaryWithObject:@"name" forKey:@"vincent"]; NSMutableDictionary *mdictianary3 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"vincent",@"name",@24,@"age",@"广州",@"address", nil]; //没有新语法 NSMutableDictionary *mdictionary4 = [NSMutableDictionary dictionaryWithDictionary:dictionary8]; //自己独有的初始化方法 NSMutableDictionary *mdictionary5 = [NSMutableDictionary dictionaryWithCapacity:10]; NSMutableDictionary *mdictionary6 = [NSMutableDictionary dictionaryWithContentsOfFile:@""]; NSMutableDictionary *mdictionary7 = [NSMutableDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:@""]];
2.操作
//增 [mdictionary5 setValue:@"vincent" forKey:@"name"]; [mdictionary5 setValue:@"guangzhou" forKey:@"address"]; NSLog(@"mdictionary5 = %@",mdictionary5); //改 [mdictionary5 setValue:@"jerry" forKey:@"name"]; NSLog(@"mdictionary5 = %@",mdictionary5); //新语法 mdictionary5[@"name"] = @"zhoudu"; NSLog(@"mdictionary5 = %@",mdictionary5); //删 [mdictionary5 removeObjectForKey:@"name"]; [mdictionary5 removeObjectsForKeys:@[]]; [mdictionary5 removeAllObjects];
NSData/NSMutableData
1.计算机中文件分为哪几种?
文本文件和二进制文件,其中我们图片、歌曲、电影等就是二进制文件,像 `.txt` 的文件就是文本文件。
2.客户端与服务器端,或者客户端与客户端数据交流的格式为二进制(字节流)。那么对于传输给客户端数据,在我们OC中用什么类来存储?即为 NSData
类。对NSData
类来说,由其实例化的对象,此对象中包含大量的字节,这些字节就是我们客户端想要信息。
3.创建NSData
//创建一个空的data NSData *data = [NSData data]; NSString *string = @"你好吗?"; //将字符串转换成NSData //将字符串转换成C语言中字符串 const char *str = [string UTF8String]; //将C语言的字符串转换成data NSData *data1 = [NSData dataWithBytes:str length:strlen(str)]; NSLog(@"data1 = %@",data1); //直接将OC中字符串转换成data NSData *data2 = [string dataUsingEncoding:4]; NSLog(@"data2 = %@",data2); //将本地文件中数据的转换成data NSData *data3 = [NSData dataWithContentsOfFile:@"/Users/vincent/Desktop/1.jpg"]; NSLog(@"data3 = %@",data3); // NSData *data4 = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://s0.hao123img.com/res/img/logo/logonew1.png"]]; NSLog(@"data4 = %@",data4); BOOL flag = [data4 writeToFile:@"/Users/vincent/Desktop/2.png" atomically:YES]; if (flag) { NSLog(@"下载成功!"); }
4.一个data的字节长度
NSUInteger length = data4.length;
5.对于NSMutableData
,其为NSData
的子类
增加[mdata appendData:data1];
NSDate
在OC中,Foundation框架为我们提供了强大时间操作类NSDate
,该类封装了各种处理时间和日期的API
1.构造一个 NSDate
类
//获取系统当前时间 NSDate *date1 = [NSDate date]; NSLog(@"date1 = %@",date1); //当前系统时间+100秒 NSDate *date2 = [NSDate dateWithTimeIntervalSinceNow:100]; NSLog(@"date2 = %@",date2); // NSDate *date3 = [NSDate dateWithTimeIntervalSince1970:100]; NSLog(@"date3 = %@",date3); // NSDate *date4 = [NSDate dateWithTimeInterval:100 sinceDate:[NSDate date]]; NSLog(@"date4 = %@",date4);
2.关于 时间戳
//将一个日期转换成时间戳,此时间戳是以1970年为标准 NSTimeInterval timeInterval1970 = [[NSDate date] timeIntervalSince1970]; NSLog(@"timeInterval1970 = %f",timeInterval1970); NSTimeInterval timeIntervalNow = [[NSDate date] timeIntervalSinceNow]; NSLog(@"timeIntervalNow = %f",timeIntervalNow);
3.将NSDate
转换成NSString
NSDateFormatter *dateFormatter = [NSDateFormatter new]; //设置时区(默认时区) dateFormatter.timeZone = [NSTimeZone systemTimeZone]; //设置时间输出格式 [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss ms"]; NSString *dateString = [dateFormatter stringFromDate:[NSDate date]]; NSLog(@"dateString = %@",dateString);
4.将 NSString
转换成 NSDate
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; NSDate *date = [dateFormatter dateFromString:@"2015-07-31 15:41:42"]; NSLog(@"date = %@",date);
- Foundation框架下的基本类
- Foundation框架下的基本类
- Foundation框架下的基本类
- Foundation框架下的常用类
- OC语言 封装 拆包基本数据类型 Foundation框架下的基础类 NSValue/NSNumber
- IOS Foundation框架基本类库的使用
- IOS Foundation框架基本类库的使用
- IOS Foundation框架基本类库的使用 NSMutableString
- Foundation框架: 7.NSMutableString的基本认识
- Foundation 框架的 NSString基本用法
- Foundation框架下的常用类--NSDate、NSDateFormatter 、NSTimeZone
- Foundation框架下的NSString应用
- Foundation框架下的结构体
- Foundation 框架的常用类
- Foundation框架(下)
- Foundation框架: 8.OC中的集合类之一 - NSArray的基本认识
- Foundation框架: 8.OC中的集合类之二 - NSMutableArray的基本认识
- Foundation框架: 8.OC中的集合类之三 - NSSet和NSMutableSet的基本认识
- JavaScript 基础工具清单
- 黑马程序员---iOS基础---内存管理
- 【Unity 教程】对象池
- [深入理解Android卷二 全文-第八章]深入理解ContentService和AccountManagerService
- iOS三级控制器的4种创建方法
- Foundation框架下的基本类
- 属性动画(上)
- opensips/kamailio gdb代码调试方法详解
- [Android百度地图SDK开发] (一)配置环境与HelloWorld
- Java基础针对自己薄弱环节总结03(面向对象封装、继承)
- Android开发环境搭建(eclipse)
- 频繁模式挖掘Apriori算法详解
- 笑点集 7
- 软件测试面试题汇总