Foundation
一.Foundation框架
Foundation是多有其他ios的基础、
Foundation框架包含很多开发常用的类型如:
结构体; 枚举; 类
若想用Foundation中的数据类型,我们要包含它的主头文件
#import<Foundation/Foundation.h>
1.结构体
NSRange结构体
格式:NSRange range = {location,length}; 查找某个字符串的位置,如果找不到,length=0,location = -1
赋值:NSString *str = @"i love life"
NSRange range1 = {2,4}//不常用
NSRange range2 = NSMakeRange(2,4);
NSRange range3 = [str rangeOfString@"love"] 查找love的位置范围
输出: NSLog(@"local = %ld,length = %ld",range.location,range.length); 打印输出
NSPoint/CGPoint结构体
格式: CGPoint p1 = NSMakePoint(1,1);//不常用 确定某个坐标位置
NGPoint(CGPoint) p2 = CGPOintMake(5,5);
NSSize/CGSize结构体
格式: CGSize s1 = CGSizeMake(40,50); 描述某个元素的宽高
NSSize s2 = NSMakeSiza(10,20);
NSRect/CGRect结构体
CGRect相当于同时拥有CGPoint和CGSize
格式:CGRect rect = {CGFloat x,CGFloat y,CGFloat width,CGFloat height};
CGRect rect1 = NSMakeRect(1,5,12,10);
对某个对象位置大小的描述
为了更简便的打印这些结构体,我们将他们转化为字符串输出
NSString *str1 = NSStringFromPoint(p2);
NSString *str2 = NSStringFromSize(s1);
NSString *str3 = NSStringFromRect(rect1);
NSLog(@"%@, 5@,%@",str1,str2,str3);
其他运用:
CGPointZero == CGPointMake(0,0);原点
同时还有:CGSizeZero;CGRectZero;
BOOL b = CGPointEqualToPoint(CGPointMake(1,1),CGpointMake(1,1));
这是判断俩个位置是否相等;
同时还有:CGSizeEqualToSize; CGRectEqualToRect;
使用这些函数前要在CoreGraphics框架中
2.类
NSString类:
字符串的创建:(对象方法)
NSString * s1 = @"sl";
NSSting * s2 = [[NSSting alloc] initWithFormat:@"age is %d",10];
NSString * s3 = [[NSString alloc] initWithUTF8String:"sl"];
const char * c = [s3 UTF8String];
NSString * s4 = [[NSString alloc] initWithContentsOfFile:文件路径 encoding:
error: ]; 将某文件转化为代码
NSURL *url = [[NSURL alloc] initWithContentsOfURL:任意资源路径 encoding:
error: ]; 将任意链接的内容转化为代码
NSString *s5 = [[NSString alloc] initWithContentsOfURL:任意资源路径 encoding:
error: ];
类方法:
[NSSting StringWithFormat:@"age is %d",10];
[NSString StringWithUTF8String:"sl"];
一般一个类方法与一个对象方法配对
其他应用:
NSMutableString 是 NSString 的子类,继承NSString的一切
NSMutableString是可变的,而 NSString字符串是不可变的
NSMutableString * s1 = [NSMutableString StringWithFormat:@"age is 10"];定义一个字符串
[s1 appendString:@" 11 13"]; 链接到s1的后面
[s1 deleteCharactersInRange:CGRangeMake(4,2)]; 删除is
经常会还会用:
NSRange range = [s1 rangeOfString:@"is"]; 查找is的范围
[s1 deleteCharactersInRange:range]; 删除is
集合类:
可以存放不同类型的的对象
OC数组只能存放OC对象,不能存放非OC对象类型:int,struct等
NSArray定义:NSArray * array = [NSArray array];建立一个OC数组
初始化: NSArray * array1 = [NSArray arrayWithObjet:@"sl",@"sd",nil];
nil是数组元素结束的标志,但并不存储
访问对象元素: NSLog(@"%@",[array obectAtINdex:1]); 传入数组某元素位置,打印,不常用
NSLog(@"%@", array array1[0]);
快速创建数组:
NSArray * array2 =@[ @"sl",@"sd"];
遍历数组: for (int = 0; i< array.counnt;i++)
{
NSLog(@"%@",array[i]);
}
第二种方法: for (id obj in array){
NSUInteger i = [array indexOfobject:obj]; 找出是第几个元素
NSLog(@"%ld-%@",i,obj);
}
obj代表每一个元素
第三种方法: [array enumercateObjectsUsingBlock:
^(id obj,NSUInteger idx,BOOL *stop)
{ NSLog(@"%ld-%@",i,obj);
}]
NSMutableArray *array = [NSMutableArray arrayWithObject:@"sl",@"as",nil];
添加元素:
[array addObject:@"sd"];
删除元素:
[array removeObject:@"as"]; 移除某个元素
[array removeObjectAtIndex:1]; 移除第几个元素
注意: @[] 这样是不可变数组;
NSSet数组
NSSet * set = [NSSet setWithObject:@"sj",@"dd",nil]; //建立数组
NSSet是没有顺序的;
NSString * str = [NSSet anyObject]; 随机产生某个元素
NSMutableSet与其他数组用法一样;
NSDictionary(字典)用法:
NSDictionary *dic = @[@"name":@"sl",@"address":@"beijing"];存储都是一对对的;
id obj = [dict objectForKey:@"name"];
还可以写成: id obj1 = dict[@"address"];
搜索某关键字,得出相应的值;
NSMutableDictionary *dic1 = [NSMutableDictionary];
添加键值对:
[dic1 setObject:@"name" forKey:@"sl"];
如果添加的关键字相同将会覆盖原来的;
移除键值对:
[dic1 removeObject:@"name" forKey:@"sl"];
遍历字典:(字典中的内容是无序的)
NSSArray *keys = [dic1 allKey];
for (int i= 0; i < dic1.count;i++){
NNString *key = keys[i];
NNString *object = dic1[key];
NSLog(@"%@-%@",key,object);
}
OC中方的都是对象,没有基本数据类型,所以我们要转化数据类型为OC的
NSNumber *num = [NSNumber numberWithInt:10];
这是将int类型转化为NSNumber型;
int num1 = [num intValue];
这是将OC转化为int数据类型;
将结构体转化为OC对象:
CGPoint *p = CGPointMake(1,1);
NSValue *v = [NSValue valueWithPoint:p];
NSArray *array = @[v];
将value转为结构体:
[value pointValue];
NSDate类:
创建一个时间对象;
NSDate *date = [NSDate date]; 显示0时区的时间
时期格式化:
NSDateFormatter *format = [[NSDateFormatter alloc] init];
format.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSDate * date1 = [format stringFormDate:date];
将NSDate格式标准化输出;
----------------------------ASP.Net+Unity开发、.Net培训、期待与您交流!-----------------------------