OC-11-Foundation框架

---------- CornerFly真诚期待与您交流! ----------

 一、结构体

Foundation框架中的结构体包括:NSRange NSPoint\CGPoinit NSSize\CGSize NSRect\CGRect

1、NSRange:表示范围

NSRange (location length)
NSString *str = @”I love OC”;
// 表示love的范围
NSRange r1 = {2,4}; // 不用
NSRange r2 =NSMakeRange(2,4);
NSRange range = [str rangOfString:@”love”]; // 查找love这个字符串的范围,返回的是结构体,找不到length为0


2、NSPoint\CGPoint:表示一个点

NSPoint(CGFloat x,CGFloat y) // CGFloat就是double
CGPoint p1 = NSMakePoint(10,10);
NSPoint p2 = CGPointMake(20,20); // 最常用
CGPointZero == CGPointMake(0,0);// 原点
CGPointEqualToPoint(p, p2); //比较两个点是否相同
NSString *str = NSStringFromPoint(p1); // 将结构体p1转为字符串

3、NSSize\CGSize :表示长和宽

NSSize s1 = NSMakeSize(100,50); 
CGSize s2 = CGSizeMake(200,100);


4、NSRect\CGRect:表示一个矩形区域

// 创建
NSRect s1 = NSMakeRect(0,0,100,50); 
CGRect s2 = CGRectMake(2,2,200,100);

//比较点是否在该区域 

CGRectContainsPoint(15, 5);

使用CG开头的要添加CoreGraphics框架

二、NSString

1、NSString和NSMutableString

1>NSString是一个类,表示不可变字符串

2>NSMutableString是NSString的一个子类,表示可变字符串。

2、NSString的操作

// 创建字符串
NSString *s = @"jim"; 
NSString *s2 = [[NSString alloc] initWithFormat:@"age is %d",10]; 
//C字符串转OC字符串 
NSString *s3=[[NSString alloc] initWithUTF8String:"jack"]; 
//OC字符串转C字符串 
charchar *s4 = [s3 UTF8String]; 
//NSUTF8StringEncoding 中文格式编码 
NSString *s5 = [[NSString alloc]initWithContentsOfFile:@"/Users/tjl/Dektop/1.txt" encoding:NSUTF8StringEncoding error:nil]; 
//URL:资源路径 
协议头:http 
//file:本地文件 
/ftp: 
NSURL *url=[[NSURL alloc] initWithString:@"http:www.baidu.com"]; 
NSString *s6 = [[NSString alloc]initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil]; 
NSLog(@"%@",s6);//最常用 
//类方法转换 
[NSURL URLWithString:s]; 
[NSString stringWithContentsOfFile:s5 encoding:NSUTF8StringEncoding error:nil]; 
[NSString stringWithFormat:s]; 
//文件资源 
[NSURL fileURLWithPath:s]; 
//字符串写入文件 
[@"hello world" writeToFile:@"/Users/tjl/Desktop/1.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil]; 
NSString *str = @"hello world"; 
[str writeToURL:@"http://www.baidu.com" atomically:(YES) encoding:NSUTF8StringEncoding error:nil]; 

3、NSMutableString的操作

// 创建
NSMutableString *s1 = [NSMutableString stringWithFormat:@” my age is 10”];
// 拼接内容到s1的后面
[s1 appendString:@”11,12”];
//获取is的范围
NSRange range = [s1 rangOfString :@”is”];
// 删除某个字符串
[s1 deleteCharactersInRange:range];


三、集合类

集合类包括NSArray、NSSet、NSDictionary。

1、OC 数组

*OC数组只能存放OC对象,不能存放非OC对象类型。

*OC数组不鞥呢存放nil值

*nil是数组元素结束的标记

2、基本操作

NSArray:OC不可变数组

NSMutableArray:可变数组

// 创建NSArray对象
NSArray *array= [NSArray array];// 这个array永远是空数组
NSArray *arry2 =[ NSArray setWithObject:@”jack”,@”rose”,nil];
NSArray *array1 = @[@”jack”,@”rose”,@”2930231”]; // 快速创建
// 数组元素个数
[array1 count];// 或者array1.count];

3、遍历

第一种:

for(id obj in array1)
{
	NSUInteger j = [array1 indexOfObject:obj];// 返回数组的下标
	NSLog(@”第%ld个元素是%@”,j.obj);

<a target=_blank href="mailto:%@”,j.obj);}">}
</a>

第二种:通过block遍历

[array enumerateObjectUsingBlock:
// 每遍历到一个元素,就会调用一次block
// 并且当前元素和索引位置当做参数传给block
^(id obj,NSUInteger idx,BOOL *stop)
{
	NSLog(@”%ld——%@",idx,obj);
	if(idx == 0)
{
	// 停止遍历
	*stop = YES;
}];

四、练习计算某个文件夹下的代码行数

 

NSUInteger codeLineCount(NSString *path)  
{  
    //1.获得文件管理者  
    NSFileManager *mgr = [NSFileManager defaultManager];  
      
    //2判断path是文件路径还是文件夹  
    BOOL dir = NO;//标记是否为文件夹  
    BOOL exist = [mgr fileExistsAtPath:path isDirectory:&dir];  
      
    //3判断路径是否存在  
    if(!exist)  
    {  
        NSLog(@"文件路径不存在");  
        return 0;  
    }  
      
    if(dir)//是文件夹  
    {  
        NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil];  
          
        int count=0;  
          
        for(NSString *filename in array)  
        {  
            NSString *fullpath = [NSString stringWithFormat:@"%@/%@",path,filename];  
            count += codeLineCount(fullpath);  
        }  
        return count;  
    }  
    else //是文件  
    {  
        //4判断文件拓展名  
          NSString *extension = [[path pathExtension] lowercaseString ];  
        if(!([extension isEqualToString:@"m"]||[extension isEqualToString:@"h"]  
             ||[extension isEqualToString:@"c"]))  
        {  
            return 0;  
        }  
          
        NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];  
        //分局指定内容分割字符串成n块  
         NSArray *array = [content componentsSeparatedByString:@"\n"];  
        /*  
         int i=0;  
         for(NSString *line in array)  
         {  
         		NSLog(@"%d-%@",i,line);  
         		i++;  
         }  
         */  
        NSRange range= [path rangeOfString:@"/Users/tjl/Desktop/2015"];  
        NSString *newStr = [path stringByReplacingCharactersInRange:range withString:@""];  
        NSLog(@"%@-%ld",newStr,array.count);  
        return array.count;  
    }  
}  
  
int main()  
{  
    NSUInteger count=codeLineCount(@"/Users/tjl/Desktop/2015");  
    NSLog(@"%ld",count);  
    return 0;  
}  

五、NSSet

1、

// 创建
NSSet *s = [NSSet set]; // 空的
NSSet *s 2=[ NSSet setWithObject:@”jack”,@”rose”,nil];
// 随机拿出一个元素
NSString *str = [s2 anyObject];
// 删除元素
[s2 removeObject:@”rose”];


2、NSSet和NSArray的对比

*都是集合,都能存放多个OC对象

*只能存放OC对象,不能存放非OC对象类型

*本身都不可变,都有一个可变的子类

*NSArray有顺序,NSSet没有顺序

六、NSDictionary

1、字典不允许有相同的key,但允许有相同的value

2、字典是无序的。

// 创建
NSDictionary *dict = @{@”name”:@”jack”,@”qq”:@”3920495”};
// 遍历
NSArray *keys =[dict allkeys];
for(int j = 0;j<dict.count;j++)
{
	NSString *key = keys[i];
	NSString *object = dict[key];
	NSLog(@”%@ = %@”,key,object);
}


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值