——Java培训、Android培训、iOS培训、.Net培训、期待与您交流!—-
Foundation框架
一、Foundation框架基本认识
<1>.正如其名,Foundation框架是其他所有IOS框架的基础
<2>.Foundation框架包含了很多开发中常用的数据类型
a.结构体
b.枚举
c.类
<3>.要想使用Foundation中的数据类型,包含它的主文件即可
#import <Foundation/Foundation.h>
<4>.Foundation框架中4种常用的结构体
NSRange,NSPoint,NSSize,NSRect
二、结构体
1.定义:综合表示出一个物体的坐标,地址,或宽、高
2.四种常用的结构体
<1>.NSRange (location, length) ->表示地址及长度
<2>.NSPoint\CGpoint (x, y ) ->表示坐标(x, y)
<3>.NSSize\CGSize (width, height) ->表示宽、高
<4>.NSRect\CGRect (CGPoint, CGSize) ->表示坐标x,y以及宽、高
3.四种结构体的基本用法
<1>.NSRange
//字符串@"i love you" ->用NSRange来描述love的位置
//一般是不用这种方法
NSRange r1 = {.location = 1, .length = 4};
//NSMakeRange是系统自带的一个函数,经常用下面这种方法来表达
NSRange r2 = NSMakeRange(2, 4) //表示地址为2,长度为4
用NSString的对象方法rangeOfString,查找某个字符串在str中的范围
NSString *str = @"i love you";
//用NSString的对象方法rangOfString,查找"ios"字符串在str中的范围
//如果找不到那个字符串,就返回length=0,location=NSNotFound=-1
NSRange range = [str rangeOfString:@"ios"];
<2>.NSPoint/CGPoint
struct CGPoint {
CGFloat x;
CGFloat y;
};
typedef struct CGPoint CGPoint;
CGPoint p1 = NSMakePoint (10, 20);
或者另一种方式
CGPoint p2 = CGPointMake (10, 20);
<3>.NSSize/CGSize
typedef CGSize NSSize;
struct CGSize {
CGFloat width;
CGFloat height;
};
typedef struct CGSize CGsize;
NSSize s1 = CGSizeMake(100, 50); //第1种表示方式
NSSize s2 = NSMakeSize(100, 50); //第2种表示方式
CGSize s3 = NSMakeSize(100, 50); //第3种表示方式
<4>.NSRect/CGRect
typedef CGRect NSRect;
struct CGRect {
CGPoint origin;
CGSize size;
};
typedef struct CGRect CGRect;
//表示坐标x位0,y为0,宽为100,高为50的结构体
CGRect r1 = CGRectMake(0,0,100,50); //第1种表示方式
CGRect r2 = NSMakeRect(0,0,100,50); //第2种表示方式
注意:以上四种结构体都是定义在Foundation/NSGeometry.h中的
三、字符串NSString和NSMutableString
1.NSString(不可变字符串)
示例
2.URL(资源路径)
URL的书写格式
协议头://路径
协议头包括:http(网络资源)、ftp(FTP服务器资源)、file(本地文件)等
3.创建字符串的类方法
一般都会有一个与对象initWith方法配对的类方法
示例
4.字符串的导出
5.NSMutableString(可变字符串)
<1>.可变字符串的拼接
示例
<2>.不可变字符串拼接后新建字符串
示例
<3>.删除字符串中的某个字符串
示例
四、集合类 (俗称OC数组)
1.集合类包含
<1>.不可变数组:NSArray、NSSet、NSDictionary、NSDate、NSObject
<2>.可变数组:NSMutableArray,NSMutableSet,NSMutableDictionary
注意:
NSMutableArray,NSMutableSet,NSMutableDictionary分别是NSArray、NSSet、NSDictionary的子类
2.OC数组与C语言数组的区别
<1>.C语言数组:只能存放单一类型数据
<2>.OC数组:可以存放各种OC对象
<3>.OC数组不能存放nil值,nil代表OC数组的结束。
<4>.OC数组只能存放OC对象、不能存放非OC对象类型,比如int、struct、enum等
NSArry *array = [NSArry array];//这个array永远是空数组
3.集合类 NSArray和NSMutableArray
4.集合类 NSSet和NSMutableSet
<1>.NSSet 无序不可变数组
<2>.NSMutableSet 无序可变数组
5.集合类 NSDictionary和NSMutableDictionary(字典)
字典基本认识
一个key(键)对应一个value(值),里面存储的东西都是键值对
key(id类型) ->value(id类型)
一般用法
索引 ->文字内容
<1>.不可变字典 NSDictionary
<2>.可变字典 NSMutableDictionary
<3>.字典的遍历
6.NSSet和NSArray的对比
共同点
<1>.都是集合,都能存储多个OC对象
<2>.只能存放OC对象,不能存放非OC对象(int,char,float,struct,enum等)
<3>.本身都不可变,但有一个可变的子类
不同点
NSArray有序,NSSet无序
五、集合类总结
1.NSArray\NSMutableArray
<1>.有序
<2>.快速创建(不可变):@[obj1, obj2, obj3]
<3>.快速访问元素:数组名[i]
2.NSSet\NSMutableSet
无序
3.NSDictionary\NSMutableDictionary
<1>.无序
<2>.快速创建(不可变):@{key1 : value1, key2 : value2}
<3>.快速访问元素:字典名[key]
六、NSValue/NSNumber
1.NSValue/NSNumber基本认识
OC数组对象只能包装OC对象,如果非要包装其他类型数据可以根据NSValue或NSNumber来转换,NSNumber只能转换基本数据类型,而NSValue可以转换任何类型,NSNumber之所以能包装基本数据类型为对象,是因为继承了NSValue
2.NSValue/NSNumber基本用法
<1>.NSNumber的基本使用
<2>.NSValue的基本使用
NSValue一般用于包装结构体:CGPoint、CGSize、CGRect
七、NSDate(时间)
1.基本使用
2.时间格式化
当我们想把NSDate对象中的时间输出到手机屏幕上时,我们就需要将NSDate对象转成字符串。
但如何告诉程序我们想要用什么格式输出呢?2015\04\07 还是 2015-04-07 11:10:36? 用24时制还是12时制?
这就用到了时间格式类:NSDateFormatter
<1>.将NSDate对象转成字符串
<2>.将字符串转成NSDate对象