黑马程序员---成长之路-----OC之基础篇Foundation框架

------<a href="http://www.itheima.com"target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! 



什么是框架



   框架是由许多类、方法、函数、文档按照一定的逻辑组织起来的集合,以便使研发程序变得更容易在OS X下的Mac操作系统中大约有80个框架为所有程序开发奠定基础的框架称为Foundation框架,通俗点说,其实框架就是一个约束体,就像我们生活中的窗框架一样,只不过时窗框架里放玻璃,而Foundation框架里放类、方法、函数、文档。



NSString字符串比较


字符串比较函数
1、比较字符串大小
字符串根据排列排序 的不同,会有大小的差异,oc中比较字符串大小的方法和C中的方法是
一样的,都是由ASCLL大小来确定大小的




compare方法就是比较字符串大小的方法,其返回结果有三种


实例:
NSString *str1=@"abc";
NSString *str=@"bcd";
//取出每个字符的ASCII,比较ASCII值大小
//compare方法比较大小
//comprare默认的区分大小写的
//compare这个函数,不能增加条件
//NSComparisonResult result=[stri compare:str2 options:NSCaseInsesitiveSearch];比较的时候,不区分大小写


NSComparisonResult result=[str1 compare:str2 ];




//不让区分大小写的需求:
//NSComparisonResult result=[str1 compare:str2 options:NSCaseInsesitiveSearch];
//同时满足即不区分大小写又要比较字符串的字符个数
//NSComparisonResult result=[str1 compare:str2 options:NSCaseInsesitiveSearch | NSNumericSearch];


//常见未枚举方法有三个
//NSCaseInsensitiveSearch :不区分大小写字符
//NSLiteralSearch: 进行完全比较,区分大小写(默认)
//NSNumericSearch:比较字符串的字符个数,而不是字符值


//当需求比较多的时候可以使用“|”来同时满足多个条件
switch(result){




        case NSOrderedAscending:


                             NSLog(@"str1<str2 升序");
                             break;
        case NSOrderedDesending:


                             NSLog(@"str1>str2 降序");
                             break;
        case NSOrderedSame:      


                             NSLog(@"str1==str2 ");
                             break;


         default:


             break;


              }

"=="不能够判断字符串是否相等  如:
if(str1==str3)//这里其实比较的是地址
判断字符串内容真正是否相等,使用的是isEqualToString:
注意:这个方法是区分大小写的




NSString前后缀检查


判断字符串前缀


 [str hasPrefix:@"要检测内容"];其中hasPrefix的返回值是BOOL类型的
判断字符串的后缀


[str hasSuffix:@"待检测后缀"] ;返回值也是BOOL类型的
      
字符串查找


查找某个字符串在另外一个字符串中首次出现的位置


原字符串 rangOfString  子字符串 


NSRange range=[str1 rangeOfString:str2];//NSRange类的返回值是长整形
NSLog(@"%lu,%lu",range.location,range.length);//location表示下标,lenght表示长度




NSRange的使用


NSRange是Foundation框架中比较常用的结构体,


NSRange用来表示事物的一个范围,通常是字符串里的字符范围或者数组里的元素范围
NSRange有两个成员


NSRange   location表示下标,NSRange  lenght表示长度




NSRange创建的几种方式
NSRange range;//range 结构体变量
NSRange *r;   //r结构体指针
//range变量的初始化方式
//通过结构体变量访问成员
range. location=3


range.length=2;



结构体变量整体赋值


</pre><pre name="code" class="objc"><pre name="code" class="objc">range=(NSRange){5,3};//强制类型转化
NSRange r2={4,5};//最简单




NSRange r3={.location=3};//只是给结构体变量中的. location成员赋值
OC中新增的
//NSMakeRange 函数的作用给NSRange结构体变量赋值
NSRange  r4=NSMakeRange(3,3);//最好理解

 

查看结构体变量的值


NSLog(@"%lu,%lu",range.location,range.length);
//可以把结构体变量转化为NSString类型
NSLog(@"%@",NSStringFromRange(range));


字符串的截取和替换
1截取
              //0123456789
NSString str =@"jaeuhnakjd";


1、从xx位置开始,到最后结束(包含XX这个位置)

[NSString *str1=str substeingFromIndex:5]
NSLog(@"str1=%@",str1);



2、从开始位置,到XX位置结束(不包含XX这个位置)


NSString *str2=[str substringToIndex:5];


NSLog(@"str2=%@",str2);





截取一个范围(包含XX这个位置)
NSRange r1={3,4};
NSString *str3=[str substringWithRange:r1];
NSLogg(@"str3=%@",str3);




字符串的替换
替换函数:stringByReplacingOccurrencesOfString:@"原字符串内容"withString:@"替换内容"


NSString的其它用法
字符串和字符串
函数:
intValue
floatValue
...Value
NSString *str=@"1";
NSString *str2=@"3.14";
int a=10;
int b=[str intValue];
a=a+b
NSLog(@"a=%d",a);



//OC的字符串和C的字符串互相转换问题
//char * NSString
//C----->OC对象
char *s="zhangsanfeng";
printf("%s\n",s);
//思路:创建一个OC的字符串对象,用C语言的字符串创建
NSString *str=[NSString stringWithUTF8String:s];
//OC---->C的字符串
NSString *str2=@"zbz";


char *s1=[str2 UTF8String];
printf("s1=%s\n",s1);


NSMutableString类继承NSString类,NSMutableString类好比一个字符串链表,
它可以任意的动态在字符串中添加字符串,删除字符串,指定位置插入字符串,
使用它来操作字符串会更加灵活。


NSMutableString和NSString的区别:
NSMutableString是可变的,里面的文字内容可以随时更改
NSString是不可变的,里面的文字内容是不能进行修改的
可变和不可变是在字符串的内容和地址的前提下说的


NSMutableString可以使用NSString的所有方法
字符串追加方法:
//创建不可改变字符串
NSString *str=@"jack";
str =@"Rose";
//创建可变字符串
NSMutableString *str1=[NSMutableString stringWithFormat:@"jack"];
[str1 appendString:@"&Rose"];


NSLog(@"ste1=%@",str1);



NSMutableString常用方法
//定义一个空的可以改变的字符串
NSMutableString *ste=[NSMutableString string];
//appendFormat格式化的添加字符串


[str appendFormat:@"http://www.baidu.com/%d",100]
//结果:http://www.baidu.com/100




//删除字符串的一部分内容


[str deleteCharactersInRange:NSMakeRange(3,4)];


//结果:httwww.baidu.com/100
//插入字符串
[str intsertString:@"p://" atIndex:3];
结果:http://www.baidu.com/100


//替换字符串的一部分内容
[str replaceCharactersInRange:NSMakeRange(11,5)withString:@"itcast"]; 


结果:http://www.itcast.com/100


NSArray的介绍和基本使用


NSArray是OC中的数组类,开发过程中尽量使用NSArray替代C语言中的数组
C语言中数组的弊端:
只能存放一种类型的数据(类型必须一致)
不能很方便的动态添加数组元素、不能很方便的动态删除数组元素(长度固定)

NSArray的使用注意:
只能存放任意的OC对象,并且是有序的
不能存储非OC对象,比如int\char\enum\struct
它是不可变的,一单初始化完毕后它里面的内容就永远是固定的,不能删除里面的元素,
也不能再往里面添加元素。


NSArray的创建方式
NSArray的类方法创建
+(instancetype)array;
+(instancetype)arrayWithObject:(id)anObject;
+(instancetype)arrayWithObject:(id)firstObj;...:
+(instancetype)arrayWithArray:(NSArray*)array;
+(id)arrayWithContentOfFile:(NSString *)path://读取一个xml文件。
+(id)arrayWithContentOfURL:(NSURL *)url://读取一个xml文件。


NSArray特点
一旦创建成功,内容不可改变
只能存放OC对象
//1、创建一个空数组
NSArray *arr1=[NSArray array];
//2、创建数组,只有一个元素
NSArray *arr2=[NSArray arrayWithObject:@"1"];
//3、创建数组,有多个元素(最常见,最常用)
NSArray *arr3=[NSArray arrayWithObject:@"one",@"two",@1,nil];
//4、调用对象方法,创建数组
//nil表示数组赋值结束
NSArray *arr4=[[NSArray alloc] initWithObject:@"three",@"four",nil];
//5、用一个已经存在的数组可以创建另外一个数组
NSArray *arr5=[NSArray arrWithArray:arr3];
NSLog(@"%@",arr5);


//注意:不能存放nil,如果非要存进去那么:
NSArray *arr3=[NSArray arrayWithObject:@"one",@"two",[NSNull null],@1,nil];


//结果:arr3=(one,two,"null"1)


//NSArray常见用法:


NSArray *arr3=[NSArray arrayWithObject:@"one",@"two",@1,nil];


//1、获取数组的长度  count获取数组元素的个数
NSLog(@"%ld",arr3.count);
//根据下标,获取下标对应的对象
NSLog(@"%@",[arr3 objectAtIndex:3]);
//返回元素下标
NSUINteger loc=[arr3 indexOfObject:@"three"];
NSLog(@"%ld",loc);
//数组中是否包含了某个元素
if([arr3 containObject:@"three"]){
            NSLog(@"包含此元素");
 
               }else{


             NSLog(@"不包含此元素");


                }




//containObject返回值是BOOL类型




//用简化的方式,来定义和访问数组元素
//1、用简化的方式,定义数组
//格式:@[数组元素]
NSArray *arr=@[@"1",@"2",@"3",@4,@"one"];


//用简化的方式访问数组元素
str=arr[1];//C语言形式的数组元素访问






//NSArray的遍历方法
//对数组进行遍历
//1、普通的方式,通过下标访问
for(int i=0;i<arr.count;i++){


        NSLog(@"-->%@",arr[i]);


       }
//2、快速枚举法for循环的增强形式


for(NSString *str in arr){




       NSLog(@"-->%@",str);






            }


//3、使用block的方式进行访问



//NSArray读写文件


//把NSArray的内容写入到文件中
NSArray *array=[NSArray arrayWithObjects:@"asd",@"sdf",@"zbz",nil];
//把NSArray 中的内容写入到文件中
//arr.plist一种特殊的文件格式
BOOL isWrite=[arr writeToFile:@"文件路径"atomically:YES]


if(isWrite){


       NSLog(@"写入成功");


            }
//从文件中,读取一个数组信息
NSArray *readArr=[NSArray arrayWithContentaOfFile@"路径"];
NSLog(@"readArr=%@",readArr);






NSArray与字符串


//把数组元素链接成字符串
//定义一个数组
NSArray *array=[@1,@2,@3,@4];
//需求:把数组中的元素用“_”连接起来
//[数组 componenteJoinedByString:@"分隔符"];
//2、给一个字符串,分割成一个数组
NSString *str2=@"400-80-12580";
NSArray *arr2=[str2 componentsSeparatedByString:@"-"];
NSLog(@"%@",arr2[1]);





NSMutableArray介绍和使用


NSMutableArray是NSArray的子类,NSMutableArray是可变的,类似于NSMutableString


数组的使用
/
/创建数组


NSMutableArray *arr=[NSMutableArray array];




//创建的时候初始化一个元素
NSMutableArray *arr2=[NSMutableArray arrWithObject:@"one"];


//创建数组的时候,初始化多个元素


NSMutableArray *arr2=[NSMutableArray arrWithObject:@"one",@"two",nil];
//创建一个数组,并且指定长度
NSMutableArray *arr2=[NSMutableArray arrWithCapacity:5];
NSLog(@"@",arr);




//添加元素


[arr addObject:@"fengjie"];
//插入元素到指定位置


[arr1 insertObject:@"zbz" atIndex:0];
//删除元素
//根据对象内容删除
[arr1 removeObject:@"zbz"];
//根据位置删除
[arr1 removeObjectAtIndex:1]//1表示下标
//全部删除
[arr1 removeAllObjects];






4、修改元素
[arr3 replaceObjectAtIndex:1 withObject:@"four"];


//更加简单的方法
arr3[1]=@"five";
NSLog(@"%d",arr3);
5、//查找元素
BOOL isSearch=[arr3 containsObject:@"one"];


6、//交换元素
//1   2   3   4   5   
//5   2   3   4   1


NSMutableArray *arr5=[NSMutableArray arrayWithObject:@1,@2,@3,@4,nil];
//可以交换数组元素
[arr5 exchangeObjectAtIndex:0 withObjectAtIndex:4];//第0个位置和第五个位置交换




 NSDictionary的介绍


//创建空字典
 NSDictionary *dict1=[ NSDictionary dictionary]


//创建只有一组键值对的字典
 NSDictionary *dict2=[ NSDictionary dictionaryWithObject:@"张三"
                        forkey:@"zs"];
//创建多组键值对的字典


//value值,key值
 NSDictionary *dict3=[ NSDictionary dictionaryWithObjectsAndKeys:@"value1",@"k1",
                       @"value2",@"k2",nil];
//注意:字典的key值和value值,都必须是对象






//快速创建一个字典
@{,,key值:value值,,,};
 NSDictionary *dict4=@{@"zs":@"zhangsanf",@"ls":@"lisi"};
NSLog(@"%@",dict4);//以%@格式打印字典,控制台输出一个{}
获取字典长度
NSLog(@"%lu",dict4.count);
根据key值取出value值
//        zs       zhaosi
NSString *str  =  [dict4 objectForKey:@"zs"];
NSLog(@"str=%@",str);


//结果:str=zhaosi



键值对集合的特点
key值不能重复:
如果重复了,也不会报错,如果重复了,最后添加的将不能报存到字典中
 NSDictionary基本使用方法




字典的遍历:
第一步:获取所有的key
第二步:根据key获取value
for(NSString *key in dict4){




             NSLog(@"key=%@,value=%@",key,[dict objectForKey:key]);




                           }
                                            key     value    stop
dict4 enumerateKeysAndObjectsUsingBlock:^(id key,id obj,BOOL *stop){


                                                                       
                                                             NSLog(@"%@-->%@",key,obj);
                                                               }






 NSDictionary简写及文件操作


获取元素:
以前
[dict objectForKey:@"name"];
现在
dict[@"name"];


文件操作参考上面
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值