Foundation框架3教学提纲_第1页
Foundation框架3教学提纲_第2页
Foundation框架3教学提纲_第3页
Foundation框架3教学提纲_第4页
Foundation框架3教学提纲_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Foundation框架3约定速成的命名规则类名首字母大写变量名和方法名首字母小写使用驼峰标志1认识Foundation框架

框架是有许多类、方法、函数以及文档按照一定的规则组织起来的集合,以便于程序员更加方便、迅速的开发程序。

cocoa程序编写主要用到2个框架Foundation和ApplicationKit(UIKit)。其中Foundation框架主要定义了一些基础类,供程序员来使用,而ApplicationKit主要是一些用户界面设计的类,用于Mac开发使用此库。Foundation框架中的所有类都继承自NSObject这个对象。 作为通用的面向对象的函数库,Foundation提供了字符串,数值的管理,容器及其枚举,以及一些其他的与图像用户界面没有直接关系的功能。其中用于类和常数的“NS”前缀来自于Cocoa的来源,NextSTEP。它可以在MacOXX和iOS中使用。2、数字对象的常用处理方法 在之前的学习中,我们已经学习了基本数据类型。但这些都是基本数据类型,它们不是对象,因此,不能向它们发送消息。然而有时也需要将他们当做对象来处理。比如,我们需要把基本类型放入集合中(在cocoa中集合只能存放对象,无法存放基本数据类型),那么这时我们需要将基本类型转换为数字对象。OC中提供了数字对象“NSNumber”可以将基本数据类型“包装”成对象,这样我们就可以将数据类型来处理了。数字对象的初始化//类方法创建数字对象intnumber=10;NSNumber*intNumber=[NSNumbernumberWithInt:number];BOOLisBool=YES;NSNumber*boolNumber=[NSNumbernumberWithBool:isBool];数字对象创建与转换数字对象的转化//实例方法创建数字对象floatpi=3.14;NSNumber*piNumber=[[NSNumberalloc]initWithFloat:pi];charcharacter='a';NSNumber*cNumber=[[NSNumberalloc]initWithChar:character];//还原成基本数据类型intmonth=[intNumberintValue];BOOLisOpen=[boolNumberboolValue];floatlength=[piNumberfloatValue];charfirstName=[cNumbercharValue];3、字符串的基本概念和常用处理方法

在Foundation框架中,提供了NSString类,用于处理字符串对象。在C语言中字符串在一对引号中表示。OC是C语言的一种延展,换句话说,OC语言是建立在C语言的基础上的(C的基础上添加了面向对象的内容,smalltalk语言)。因此,为了区别两者的字符串,OC语言的字符串必须以@开头,引号当中则是字符串的内容,如@“abc”。此外,NSString对象,一旦被创建,就不可以更改。如若需要一个可以更改的字符串对象,需要创建NSMutableString实例。字符串对象的创建字符串的创建创建一个字符串创建一个空的字符串快速创建一个字符串NSString*string=@"这是一个字符串常量";NSString*string1=[[NSStringalloc]init];NSString*string2=[NSStringstring];NSString*string=[[NSStringalloc]initWithString:@"快速创建字符串"];NSString*string=[NSStringstringWithString:@"快速创建一个字符串"];比较字符串对象intnumber=2;NSString*string=[[NSStringalloc]initWithFormat:@"%d",numnber];快速创建一个格式化字符串floatnumber=2.4;NSString*string=[NSStringstringWithFormat:@"浮点数%f",number];比较字符串测试字符串内容是否相同比较字符串对象测试字符串是否为同一个对象比较字符串的大小求字符串的长度NSString*string1=[[NSStringalloc]initWithFormat:@"a"];NSString*string2=[[NSStringalloc]initWithFormat:@"b"];NSLog(@"[string1caseInsensitiveCompare:string2]:%ld",[string1caseInsensitiveCompare:string2]);字符串对象的转换NSString*string1=[[NSStringalloc]initWithFormat:@"stringlength"];NSUInteger*length=[string1length];字符串的转换改变字符串大小写NSString*hello=@'"helloWORLD";NSLog(@“%@”,[hellouppercaseString]);//全部大写NSLog(@"%@",[hellolowercaseString]);//全部小写NSLog(@"%@",[hellocapitalizedString]);//首字母大写,其他字母小写将字符串转换成基本数据类型NSString*string=@"2.467";NSLog(@"%d",[stringboolValue]);//转换成BOOL类型NSLog(@"%f",[stringfloatValue]);//转换成浮点型NSLog(@"%f",[stringdoubleValue]);//转换成双精度型NSLog(@"%d",[stringintValue]);//转换成整型截取字符串对象NSString*string=@"OneTwoThreeFour";NSArray*array=[stringcomponentsSeparatedByString:@""];将字符串转换为数组字符串的截取与拼接截取字符串NSString*string=[[NSStringalloc]initWithFormat:@"abcdef"];//从字符串的开头一直截取到指定的位置,但不包括该位置的字符NSString*string1=[stringsubstringToIndex:2];//以指定位置开始(包括指定位置的字符),并包括之后的全部字符NSString*string2=[stringsubstringFromIndex:2];拼接字符串对象截取字符串NSRangerang;rang.location=2;rang.length=2;NSString*string3=[stringsubstringWithRange:rang];NSString*str1=@"1",*str2=@"2";NSString*string=[[NSStringalloc]initWithFormat:@"这时拼接:%@and%@",str1,str2];NSString*string1=[str1stringByAppendingFormat:@"%@",str2];NSString*string2=[str1stringByAppendingString:str2];查询字符串查询字符串对象NSString*link=@"asdastarget=_blankddasd";NSRangerange=[linkrangeOfString:@"target=_blank"];if(range.location!=NSNotFound){NSLog(@"string找到了");}可变字符串对象可变字符串----NSMutableString,它继承自NSString插入字符串删除字符串替换字符串NSMutableString*str=[NSMutableStringstringWithString:@"字符串"];[strinsertString:@"可变"atIndex:0];NSMutableString*str=[NSMutableStringstringWithString:@"字符串"];[strdeleteCharactersInRange:NSMakeRange(1,2)];NSMutableString*str=[NSMutableStringstringWithString:@"字符串"];[strreplaceCharactersInRange:NSMakeRange(0,2)withString:@"羊肉"];4、集合----数组的概念和常用方法数组的基本概念Foundation中的数组(NSArray,NSMutableArray)是一组有序的对象集合,通过索引下标取到数组中的各个元素。与字符串相同,数组也有可变和不可变数组之分。此外,数组中不可以存放基本数据类型,只能存放类的实例(对象)。如若需要将基本数据类型、结构体放入数组中,需要通过NSNumber、NSValue进行数据的“封装”;不可变数组----NSArray数组的初始化NSArray*firstArray=[NSArrayarrayWithObject:@"one"];//多个元素初始化时,注意nil作为数组的结束NSArray*secondArray=[NSArrayarrayWithObjects:@"one",@"two",nil];NSArray*thirdArray=[NSArrayarrayWithArray:secondArray];NSArray*FourArray=[NSArrayarrayWithContentsOfFile:path];数组的常用方法常用方法NSArray*array=[NSArrayarrayWithObjects:@"a",@"b",@"c",nil];//获取数组中的元素个数NSIntegercount=[arraycount];//根据下标访问对象NSString*firstObj=[arrayobjectAtIndex:0];//在原来的数组上追加对象,返回一个新的数组对象NSArray*addArray=[arrayarrayByAddingObject:@''ddd"];//用指定的字符串将数组中的元素连接起来NSString*arrayStr=[arraycomponentsJoinedByString:@","];//数组中是否包含某对象BOOLisContain=[arraycontainsObject:@"bbb"];//查询指定对象在数组中的元素,如果没此元素,返回NSNotFoundNSIntegerindex=[arrayindexOfObject:@"ccc"];//获取数组中最后一个元素NSString*lastString=[arraylastObject];可变数组的常用方法可变数组----NSMutableArray,它继承自NSArray常用方法//初始化,设定元素个数为5,但可以更改NSMutableArray*mutableArray=[NSMutableArrayarrayWithCapacity:5];//向数组中添加一个元素[mutableArrayaddObject:@"aaa"];//向数组中指定下标插入元素[mutableArrayinsertObject:@"ccc"atIndex:0];//移除指定元素[mutableArrayremoveObject:@"aaa"];//移除指定下标的元素[mutableArrayremoveObjectAtIndex:0];//向数组中添加数组[mutableArrayaddObjectsFromArray:array];遍历数组遍历数组遍历数组常规方法NSArray*array=[NSArrayarrayWithObjects:@"a",@"b",@"z",nil];intlength=[arraycount];for(inti=0;i<length;i++){NSString*element=[arrayobjectAtIndex:i];NSLog(@"%@",element);}//遍历的性能较低//替换指定的下标元素[mutableArrayreplaceObjectAtIndex:0withObject:@"replace"];//移除所有对象[mutableArrayremoveAllObjects];快速枚举遍历数组for(NSString*stringinarray){NSLog(@"found%@",string);}//遍历的性能高for(idstringinarray){NSLog(@"found%@",string);}//当不确定数组的元素的类型时,可以选择用id4、集合----字典的概念和常用方法遍历数组Foundation中的字典(NSDictionary,NSMutableDictionary)是由键--值对组成的数据集合。正如,我们在字典里查找单词的定义一样。通过key(键),查找对象value(值),key通常是字符串对象,也可以是其他任意类型对象。在一个字典对象中,key的值是唯一的。此外,字典对象的键和值不可以为空(nil),如果需要在一个字典对象中表示一个空值,可以使用NSNull对象。不可变字典----NSDictionary字典的初始化字典的初始化方法常用方法NSNumber*numObj=[NSNumbernumberWithInt:100];//以一个元素初始化NSDictionary*dic=[NSDictionarydictionaryWithObject:numObjforKey:@"key"];//初始化两个元素NSDictionary*dic=[NSDictionarydictionaryWithObjectsAndKeys:numObj,@"valueKey",numObj2,@"valueKey2",nil];//初始化新字典,新字典包含otherDicNSDictionary*dic=[NSDictionarydictionaryWithDictionary:otherDic];//以文件内容初始化字典NSDictionary*dic=[NSDictionarydictionaryWithContentsOfFile:path];字典的常用方法可变字典----NSMutableDictionary继承自NSDictionary常用方法//获取字典数量NSIntegercount=[diccount];//通过key获取对应的value对象NSObject*valueObj=[dicobjectForKey:@"key"];//将字典的key转成一个枚举对象,用于遍历NSEnumerator*enumerator=[dickeyEnumerator];//获取所有键的集合NSArray*keys=[dicallKeys];//获取所有值的集合NSArray*values=[dicallValues];可变字典的常用方法//初始化一个空的可变字典(注意以下代码前后无关联性)NSMutableDictionary*dic2=[NSMutableDictionarydictionaryWithObjectsAndKeys:@"v1",@"key1",@"v2",@"key2",nil];NSDictionary*dic3=[NSDictionarydictionaryWithObject:@“v3”forKey:@"key3"];//向字典2对象中添加整个字典对象3[dic2addEntriesFromDictionary:dic3];//向字典2对象中追加一个新的key3和value3[dic2setValue:@"value3"forKey:@"key3"];//初始化一个空的可变字典NSMutableDictionary*dic1=[NSMutableDictionarydictionary];//将空字典1对象的内容设置为字典2对象相同[dic1setDictionary:dic2];[dic1removeObjectForKey:@"key1"];//将字典中key1对应的值删除NSArray*array=[NSArrayarrayWithOjbects:@"key1",nil];[dic2removeObjectsForKeys:array];//根据制定的数组(key)移除字典2的内容[dic1removeAllObjects];//移除字典所有对象遍历字典遍历字典快速枚举一般的枚举通过枚举类型枚举for(idkeyindic){idobj=[dicobjectForKey:key];NSLog(@"%@",obj);}NSArray*keys=[dicallKeys];intlength=[keyscount];for(inti=0;i<length;i++){idkey=[keysobjectAtIndex:i];idobj=[dicobjectForKey:key];NSLog(@"%@",obj);}遍历字典NSEnumerator*enumerator=[dickeyEnumerator];idkey=[enumeratornextObject];while(key){idobj=[dicobjectForKey:key];NSLog(@"%@",obj);key=[enumeratornextObject];}4、集合----集合概念和常用方法集合的基本概念在Foundation框架中,提供了NSSet类,它是一组单值对象的集合,且NSSet实例中元素是无序,同一个对象只能保存一个,并且它也分为可变和不可变对象(可变集合对象,NSMutableSet)。不可变集合----NSSetNSSet的初始化//类似与数组的构建,直接创建一个集合NSSet*set1=[[NSSetalloc]initWithObjects:@"one",@"two",nil];//通过数组的构建集合NSArray*array=[NSArrayarrayWithObjects:@"1",@"2",@"3",nil];NSSet*set2=[[NSSetalloc]initWithArray:array];//通过已有集合构建集合NSSet*set3=[[NSSetalloc]initWithSet:set2];集合的常用方法NSSet的常用方法(BOOL)//集合3中对象的个数intcount=[set3count];//以数组的形式返回集合3中所有的对象NSArray*allObjects=[set3allObjects];//返回集合3中的任意一个对象idobject=[set3anyObject];//集合4中是否包含内容为2的字符串对象,如果包含返回YES,否则返回NOBOOLisContain=[set4containsObject:@"2"];//集合4中与集合2中是否存在有相同元素的对象,如果有返回YES,否则为NOBOOLisIntersect=[set4intersectsSet:set2];//集合4与集合5的元素是否完全匹配,如果匹配返回YES,否则为NOBOOLisEqual=[set4isEqualToSet:set5];//集合4是否是集合5的子集合,如果是返回YES,否则为NOBOOLisSubset=[set4isSubsetOfSet:set5];集合的常用方法可变集合----NSMutableSet,它继承自NSSet常用方法

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论