首页 > 代码库 > Foundation框架
Foundation框架
Foundation框架
正如其名,Foundation框架是其他所有ios框架的基础
Foundation框架包含了很多开发中常用的数据类型:
1.结构体
2.枚举
3.类
要想使用Foundation中的数据类型,包含他的主文件即可
#import<Foundation/Foundation.h>
Foundation中的结构体
NSRange
NSPoint\CGPoint
NSSize\NSSize
NSRect\NSRect
NSRange中的成员
Location位置
length 长度
例如:
Love的范围
@“I love oc”
NSRange r1 = {2,4};//不用
NSRange r2 = {.location = 2,.length = 4};
NSRange r3 = NSMakeRange(2,4);
NSString *str = @”I love oc”;
//查找某个字符串在str中的范围
//如果找不到,length=0,location=NSNotFound==-1
NSRange range = [str rangeOfString@”love”];
NSLog(@”loc=%ld,len=%ld”,range.location,range.length);
NSPoint\CGPoint
CGPointp1=NSMakePoint(10,10);
NSPointp2 = CGPointMake(10,10);//这个是开发中最常用的
NSSize\NSSize
表示UI元素的尺寸的
NSSize s1 = CGSizeMake(100,50);
NSSize s2 = NSMakeSize(100,50);
NSRect\NSRect
包含了CGPoint、CGSize
NSRect r1 = CGRectMake(0,10,100,20);
当需要打印的时间要把结构体转换成字符串再进行打印
NSString *mmm = NSStringFromPoint()
NSString *mmm = NSStringFromSize()
NSString *mmm = NSStringFromRect()
NSRect r1 = CGRectMake{{0,0},{100,20}};
NSRect r1 = CGRectMake{p1,s2};
表示原点:CGPointZero == CGPointMake(0,0);
//比较两个点是否相同
BOOL b = CGPointEqualToPoint(CGPointMake(10,10),CGPointMake(10,10));
CG需要导入框架CoreGraphics
Foundation中的类
NSString有个子类NSMutableString
NSArray有个子类NSMutableArray
NSSet有个子类NSMutableSet
NSDictionary有个子类NSMutableDictionary
NSDate
NDObject
1. NSString
NSString:不可变字符串
NSMutableString:可变字符
A. 字符串的创建
NSString *s1 = @”jack”;
NSString *s2 = [[NSString alloc] initWithString:@”jack”];
NSString *s3 = [[NSString alloc] initWithFormat:@”ageis %d”,10];
//c字符串转化成OC字符串
NSString *s4 = [[NSString alloc] initWithUTF8Sting:”jack”];
//OC字符串转换成c字符串
Const char *C = [s4UTF8String];
//NSUTF8StringEncoding用到中文就可以用这种编码
NSString *s5 = [[NSString alloc]initWithCountsOfFile:@”/Users/apple/Desktop/1.txt”encoding:NSUTF8StringEncoding error:nil];
//URL资源
NSString *s6 = [[NSString alloc]initWithCountsOfURL:@”file:///Users/apple/Desktop/1.txt”encoding:NSUTF8StringEncoding error:nil];
B. NSMutableString可变字符串
补充词汇:append增加、拼接
NSRange跟删除字符串的结合使用
2. 集合类
NSArray有个子类NSMutableArray
NSSet有个子类NSMutableSet
NSDictionary有个子类NSMutableDictionary
a. OC中的数组:NAArray
在OC数组中不能存放基本数据类型,即只能存放OC对象不能存放非OC对象类型
NSArry *array =[NSArry array];//这个array永远是空数组
NSArray :是一个不可变数组
NSMutableArray:是一个可变数组
NSArray *array =[NSArray arrayWithObject:@“asfd”,@“rose”,nil]//nil是数组元素结束的标记
@[]创建数组对象
数组中的遍历:
方式一、 For(int i=0;i<array.count;i++)
{
NSLog(@“%@”,array[i]);
}
方式二、 For(id obj in array)
{
NSLog(@”%@”,obj);
}
方式三、
//没遍历到一个元素,就会调用一次block
//并且当前袁术和索引位置当作参数传给Block
[array enumrateObjectUsingBlock:
^(id obj ,NSUInteger idx,BOOL*stop)
{
NSLog(@“------------%ld--%@”idx,obj);
If(ind==0){
*stop= YES;
}
}];
递归思想
NSMutableArray:是一个可变数组
NSMutableArray*array = [NSMutableArray array];
//添加数组元素
[arrary addObject:[Person alloc] init];
[arrary addObject:@”jack”];
//删除元素
[array removeAllObject];
[array removeObject:@”jack”];
//下面代码中2是数组的下标号
[array removeObjectAtIndex:2];
在NSMutableArray中不能用@[]这个快速写数组,因为@[]数组是不可写数组
b. NSSet是没有数据的
anyObject 随机返回元素
NSMurableSet:
addObject
remove
c. NSDictionary有个子类NSMutableDictionary
里面存储的东西都是键值对
@{key,value}但是快速创建自字典之后是不能更改的,即不可变的
字典的遍历:
方式一、NSDictiongary *dict = @{@”address”:@”北京”@”name”:@”jack”,@”qq”:@”565632362”};
NSArray *keys = [dict allKeys];
For(int i=0;i<dict.count;i++)
{
NSString *key =key[i];
NSString *object = dict[key];
}
方式二、
[dict enumerateKeyAndObjectsUsingBlock:^(id key,idobj,BOOL *stop){
NSLog(@”%@--%@”,key,obj);
*stop =YES;//只遍历一次
}];
集合总结:
1. NSArray\NSMutableArray
l 有序
l 快速创建(不可变的):@[]
l 快速访问元素:数组名[i]
2. NSSet\ NSMutableSet
l 无序
3. NSDictionary\NSMutableDictionary
l 无序
l 快速创建(不可变的):@{key1:value1,key2:value2}
l 快速访问:字典名[key]
d. NSNumber
@20 -------------将20包装成一个NSNumber对象
e. NSValue
这是一个万能包装,任何东西都能包装成NSValue对象
例如:
Int main()
{
//结构体--àOC对象
CGPointp = CGPointMake(10,10);
NSValue*value = http://www.mamicode.com/[NSValue nalueWithPoint:p];
NSArray*array = @[ value];
}
4. NSDate
NSDate *date =[NSDate date];
//日期格式化
NSDateFormatter *formatter =[[NSDateFormatter alloc] init];
//y年M月d日
//m分s秒H(24)时h(12)时
Formatter.dateFormar = @”yyyy-MM-ddHH:mm:ss”;
NSString *str = [formatterstringFromDate:date];
本文出自 “我成IT成长之路” 博客,请务必保留此出处http://jeason.blog.51cto.com/9704473/1595334
Foundation框架