黑马程序员:Objective-C Foundation框架


Foundation框架


 ----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

 
       Foundation框架很常用,开发中几乎都需要用到,所以对这个框架稍微总结一下。对于常用的结构体和类分开说一下会比较好理解的:
 
foundation常用结构体有这些:
 
NSRange   NSPoint(CGPoint坐标)   NSSize   NSRect
 
NSRange r = NSMakeRage(location, length) // 后面的是函数
 

把结构体转换成字符串可以这么做:
 
CGPoint p = CGPointMake(10, 54);
NSString *str = NSStringFormPoint(p);
 
NSString *str = @"ii love oc"; // 查找某个字符串的范围
 
NSRange range = [str stringOfString:@"ve o"];
 

NSLog(@"loc = &ld, length = %ld",range.location, range.length)
 
注意:函数名:CGPointMake(可以跨平台,尽量使用)  或者  NSMakePoint
 
如果找不到字符串的话,length = 0, location = NSNotfound = -1;
 

CGRect r1 = CGRectMake(0, 0, 100 ,193); // 第一二参数是CGPoint,后面的是size
 
参数亦可:CGRect r1 = CGRectMake{{0, 0}, {100 ,193}};
 
 CGRect r1 = CGRectMake(p1, s1); // 里面的参数代表结构体
 
 坐标是0的时候可以:CGPointZero
 
使用CG而不是NS的时候,要添加框架进去,不是#import,而是在xcode里面设置添加
 
 
 
常用的foundation类有这些:
 
NSString   // 数组用 @[]

NSArray    // 这四个只能存放oc对象,不能放基本数据类型。比如@{10}×

NSSet (加上Mutable可变)       // 无论是数组还是字典,快速创建的都只能是父类,子类不能快速创建
NSDictionary    // 字典用 @{}

NSNumber / NSValue  // @后面跟上一个数字,自动变成[NSNumber numberWithInt:4]对象
NSDate
 
这些都是固定的不可变的,如果变成NSMutableString(加上Mutable)则是可变,其他都是一样
 

 
NSString:
 

是可以(写入)读取文件:(可以对中文进行编码转换)尽量用URL这个方式读取文件即下面的file换成URL
 
NSString *cs = [NSString alloc] initWithContentsOfFile:@"文件的绝对路径" encoding:
 
NSUTF8StringEncoding error: nil];
 
NSUTF8StringEncoding  用到中文就可以这样编码
 
NSMutableString可变字符串:
 
 // 创建对象后,可以对这个对象增加和删除字符:
[s appendString:@"内容"];删除换成delete
 
注意:创建对象的时候可以不用写alloc init,可以直接调用类方法,因为是返回一个对象的:
 
[[NSString alloc] initWithFormat:@""];可换成[NSString stringWithFormat:@""];一般类方法名都是和类名相同的
 
查看一下字符串里面的每一个元素(面向对象的思想):
 [content characterAtIndex:(NSUInteger(整数))];
 
数有多少行:更好用的是把代码分割成很多块,标记是\n,返回的是一个数组对象

 NSArray * array = [content componentsSeparatedByString:@"\n"];
 
 return array.count; // 这里返回一个int的就可以了
 
 
 
 
NSArray
 
 
OC数组只能存放OC对象,不能存放非OC对象,不能存放空值
 
创建oc数组:NSArray *a = [NSArray arrayWithObject:@"sdljfef"]; // 加上s就是可以传很多对象
 
快速创建数组:NSArray *a = @[]; // @就是创建NSArray对象的快捷方式,中括号里面写对象就好
 
这个快速创建数组的方法“@[]”不适用于NSMutableArray这个数组
 
读取的时候:两种方法

 1 [array objectAtIndex:1]; // 读取第二个对象

 2 array[1]; // 这是编译器的特性,会自动转换成上面的方法,以后用这个
 
遍历OC对象的数组:
 
[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. 1    for(int i = 0; i < array.count; i++)  
  2.     {  
  3.         NSLog(@"%@", array[i]);  
  4.     }   
  5.   
  6. 2(快速遍历) for(id obj in array)  
  7.     {     
  8.         NSUInteger i = [array indexOfObject:obj];  
  9.         NSLog(@"%ld - %@",i, obj);  
  10.     }  
  11.   
  12. 3   [array enumerateObjectUsingBlock:  
  13.   
  14.     ^(id obj, NSUInteger idx, BOOLBOOL *stop)  
  15.     {  
  16.         NSLog(@"%ld - %@",idx, obj)  
  17.     }];  
  18.   
  19. 第三种方法的本质是:  
  20.     void [^myBlock](id, NSUInteger, BOOL*) = ^(id obj, NSUInteger idx, BOOLBOOL *stop)  
  21.   
  22.     {  
  23.         NSLog(@"%ld - %@",idx, obj);  
  24.           
  25.         if(idx = 0)  
  26.         {  
  27.             *stop = YES;  
  28.         }  
  29.     }  
  30.       
  31.     for(int i = 0; i < array.count; i++)  
  32.   
  33.     {  
  34.         BOOL isStop = NO;  
  35.         id obj = array[i];  
  36.         myBlock(obj, i, &isStop); // 用指针才会改变stop的值,否则是值传递  
  37.         if(isStop)  
  38.         {  
  39.             break;  
  40.         }  
  41.     }  

 
NSFileManager这个类是只能创建一个对象,调用多少次都是只有一个对象,方式:
 
 // 获取文件管理者
NSFileManager * mgr = [NSFileManager defaultManager];
 
判断一个路径是文件还是文件夹:
 
BOOL dir = NO; // 默认是NO
[mgr fileExistsAuPath:路径 isDirectory:BOOL*];
 
 

NSSet
 
这个是没有顺序的,用法和NSArray相似
 
创建一个NSSet:NSSet *s = [NSSet setWithObject:@"字符串"];
 
调用的时候:NSString *str = [s anyOject]; // 只能随机拿数组的元素
 
 
 
NSDictionary:

 创建:NSDictionary *dict = @{索引@"" :内容@"";索引 :内容};
 
 
 
NSNumber / NSValue
 
NSNumber是NSValue的子类,前者只能让数字和字符和BOOL包装成对象,本质是依赖于父类的方法;后者可以把结构体等等基本数据类型包装成对象。
 
 
 
 
NSDate
 
[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. // 这个是DATE转成字符串的形式  
  2.   
  3.   
  4.   
  5. // 显示当前(执行这个代码)的时间  
  6.   
  7. NSDate *date = [NSDate date];  
  8.   
  9. // 日期格式化类  
  10.   
  11. NSDateFormatter *formatter = [[NSDateFormatter alloc] init];  
  12.   
  13. // y 年 M 月 d 日  
  14. // m 分 s 秒 H (24)时 h (12)时  
  15. formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";  
  16.   
  17. NSString *str = [formatter stringFromDate:date];  
 

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

详情请查看:http://edu.csdn.net/heima



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值