黑马程序员——OC中Foundation框架

来源:互联网 发布:淘宝卖家怎么拉黑买家 编辑:程序博客网 时间:2024/05/16 23:58

——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=-1NSRange 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对象
这里写图片描述

0 0
原创粉丝点击