资源描述
第10章Foundation框架的基本对象在Objective-C中的程序编写主要用到2个框架Foundation和ApplicationKit。其中Foundation框架主要定义了一些基础类,供程序员来使用。Foundation框架中的所有类都继承自NSObject这个对象。本章主要讲解Foundation的基本对象。1.10.1数字对象Foundation框架中所提到的数字类型,可以通过使用NS数字类型将基本的数据类型封装到对象中,然后对相应的对象进行操作。本节主要讲解数字对象的定义形式和适应方法。2.10.1.1 数字对象的介绍Foundation框架中提供了NSNumber对基本的数据类型进行封装。通过调用数字对象的类方法和对象方法,将基本的数据类型转化为数字对象。3.10.1.1 数字对象的介绍类型型说明明char字符型对象UnsignedChar无符号字符型对象Short短整型对象UnsignedShort无符号短整型对象Integer整型对象UnsignedInteger无符号整型类型对象int整型对象UnsignedInt无符号整型对象Long长整型对象UnsignedLong无符号长整型对象LongLong长长整型对象UnsignedLongLong无符号长长整型对象float浮点型对象double双精度型对象Bool布尔型对象4.10.1.2 数字对象的使用我们对数字对象有了一定的了解以后,我们来了解数字对象的在各方法中的使用。5.1.数字对象的声明数字对象声明的形式。6.1.数字对象的声明7.2.数字对象的创建并初始化创建和初始化的形式。8.2.数字对象的创建并初始化名称名称创建和初始化建和初始化类方法方法字符型字符型对象的象的创建和初始化建和初始化numberWithChar:无符号字符型无符号字符型对象的象的创建和初始化建和初始化numberWithUnsignedChar:短整型短整型对象的象的创建和初始化建和初始化numberWithShort:无符号短整型无符号短整型对象的象的创建和初始化建和初始化numberWithUnsignedShort:整型整型对象的象的创建和初始化建和初始化numberWithInteger:无符号整型无符号整型对象的象的创建和初始化建和初始化numberWithUnsignedInteger:整型整型对象的象的创建和初始化建和初始化numberWithInt:initWithInt:无符号整型无符号整型对象的象的创建和初始化建和初始化numberWithunsignedInt:长整型整型对象的象的创建和初始化建和初始化numberWithLong:无符号无符号长整型整型对象的象的创建和初始化建和初始化numberWithUnsignedLong:长长整型整型对象的象的创建和初始化建和初始化numberWithLongLong:无符号无符号长长整型整型对象的象的创建和初始化建和初始化numberWithUnsignedLongLong:浮点型浮点型对象的象的创建和初始化建和初始化numberwithFloat:双精度浮点型双精度浮点型对象的象的创建和初始化建和初始化numberWitnDouble:布布尔型型对象的象的创建和初始化建和初始化numberWithBool:9.2.数字对象的创建并初始化10.2.数字对象的创建并初始化11.2.数字对象的创建并初始化12.2.数字对象的创建并初始化13.3.数字对象的初始化初始化的方法。14.3.数字对象的初始化名称名称初始化示例方法初始化示例方法字符型字符型对象的初始化象的初始化initWithChar无符号字符型无符号字符型对象的初始化象的初始化initWithUnsignedChar短整型短整型对象的初始化象的初始化initWithShort无符号短整型无符号短整型对象的初始化象的初始化initWithUnsignedShort整型整型对象的初始化象的初始化initWithInteger无符号整型无符号整型对象的初始化象的初始化initWithUnsignedInteger整型整型对象的初始化象的初始化initWithInt无符号整型无符号整型对象的初始化象的初始化initWithUnsignedInt长整型整型对象的初始化象的初始化initWithLong无符号无符号长整型整型对象的初始化象的初始化initWithUnsignedLong长长整型整型对象的初始化象的初始化initWithLongLong无符号无符号长长整型整型对象的初始化象的初始化initWithUnsignedLongLong浮点型浮点型对象的初始化象的初始化initWithFloat双精度浮点型双精度浮点型对象的初始化象的初始化initWithDouble布布尔型型对象的初始化象的初始化initWithBool15.3.数字对象的初始化16.4.数字对象的取值取值方法的表示形式。17.4.数字对象的取值名称名称取取值实例方法例方法字符型字符型对象的取象的取值charValue无符号字符型无符号字符型对象的取象的取值unsignedCharValue短整型短整型对象的取象的取值short Value无符号短整型无符号短整型对象的取象的取值unsignedShortValue整型整型对象的取象的取值integerValue无符号整型无符号整型对象的取象的取值unsignedIntegerValue整型整型对象的取象的取值intValueunsigned无符号整型无符号整型对象的取象的取值unsignedIntValue长整型整型对象的取象的取值longValue无符号无符号长整型整型对象的取象的取值UnsignedLongValue长长整型整型对象的取象的取值longlongValue无符号无符号长长整型整型对象的取象的取值unsignedLongLongValue浮点型浮点型对象的取象的取值floatValue双精度浮点型双精度浮点型对象的取象的取值doubleValue布布尔型型对象的取象的取值boolValue18.4.数字对象的取值19.10.2 字符串对象Foundation框架中所提到的字符串类型,可以通过使用NS字符串类型将基本的字符串封装到对象中。然后对相应的对象进行操作。字符串对象可以分为可修改和不可修改两类。本节将主要讲解字符串对象的使用。20.10.2.1 字符串和字符的区别字符串常量和字符常量是不同的常量,它们之间的区别如下。21.1组成格式字符常量是由单引号括起来的,字符串常量使用符号和双引号括起来。22.2.字符的多少字符常量只能是单个字符,字符串常量可以是单个或多个字符。23.3.占用的内存空间字符常量占一个字节的内存空间。字符串常量占的内存字节数为字符串的字节数加1,其中加的一个字节中存放字符0即结束标志。24.10.2.2 不可修改的字符串在Objective-C使用NSString类来操作字符串。在对字符串使用之前,我们要将字符串的头文件加入代码中。25.10.2.2 不可修改的字符串26.10.2.2 不可修改的字符串27.10.2.2 不可修改的字符串28.10.2.2 不可修改的字符串29.10.2.2 不可修改的字符串30.1.stringWithStringstringWithString的功能是用一个字符串对象来创建另一个字符串对象。31.2.stringWithFormatstringWithFormat功能是用NSLog()格式创建字符串。32.3.stringByAppendingStringstringByAppendingString的功能是在一个字符串后面增加一个新字符串。33.4.字符串的比较和判断isEqualToString的功能是比较两个字符串是否相等。34.4.字符串的比较和判断35.5.字符串的大小写转换uppercaseString的功能是将小写字母转为大写字母。36.5.字符串的大小写转换37.6.substringToIndexsubstringToIndex主要的功能是截取字符串。38.6.substringToIndex方法方法说明明+(id)stringWithContentsOfFile:path encoding:enc error err创建一个新字符串并将其设置为path指定的文件的内容,使用字符编码enc,在err上返回错误+(id)stringWithContentsOfURL:urlencoding:enc error:err创建一个新字符串,并将其设置为url所指定的内容,使用字符编码enc,在err上返回错误+(id)string创建一个新的空字符串-(id)initWithString:nsstring创建一个新的空字符串,并将其内容设置设置为nsstring内容(id)initWithContentsOfFile:path encoding:enc error:err将字符串设置为path指定的文件的内容-(id)initWithContentsOfURL:urlencoding:enc error:err将字符串设置为url所指定的内容,使用enc字符编码,在err上返回错误-(UNSIgned int)length返回字符串中的字符数目-(unichar)characterAtIndex:i返回索引i虽在的Unicode字符-(NSString*)substringFromIndex:i返回从i开始到结尾的子字符串-(NSString*)substringWithRange:range根据指定范围返回子字符串-(NSString*)substribgToIndex:i返回从字符串开始位置到i的子字符串-(NSComparator*)caseInsensitiveCompare:nsstring比较两个字符串(忽略大小写)-(NSComparator*)Compare:nsstring比较两个字符串的大小-(BOOL)hasPrefix:nsstring测试字符串是否以nsstring开始-(BOOL)hasSuffix:nsstring测试字符串是否以nsstring结尾-(BOOL)isEqualToString:nsstring测试两个字符串是否相等-(NSString*)caoitalizedString返回字符串,串中的每个单词的首字母大写,其余字母小写-(NSString*)lowercaseString返回转换为小写的字符串-(NSString)uppercaseString返回转换为大写的字符串-(const char*)UTF8String返回UTF8编码格式的字符串-(double)doubleValue返回转换为double类型的字符串-(float)floatValue返回转换为float类型的字符串-(NSInteger)integerValue返回转换为NSInteger类型的字符串-(int)intValue返回转换为int类型的字符串39.10.2.3 可修改的字符串使用NS字符串NSString的时候。字符串对象是不可以进行任何修改的。如果需要对字符串对象进行插入、删除或者其他的操作时,就需要使用NS可变的字符串NSMutableString。NSMutableString是NSString的子类。所以NSMutableString继承了NSString的所有类方法和对象方法。40.10.2.3 可修改的字符串41.10.2.3 可修改的字符串42.1.appendStringappendString的功能是将一个字符串的末尾附加一个字符串。43.2.appendFormatappendFormat的功能是附加一个格式化字符串。它的使用使用形式如图10.44所示。44.2.appendFormat方法方法功能功能+(id)stringWithCapacity:size创建一个字符串,size个字符容量-(id)initWithCapacity:size初始化一个字符串。size个字符容量-(void)setString:nsstring将字符串设置为nsstring-(void)appendString:nsstring在一个字符串末尾附加一个字符串nsstring-(void)deleteCharactersInRange:range删除指定rang中的字符-(void)insertString:nsstring aTIndex:i以i为起始位置插入nsstring-(void)replaceCharactersInRange:rangwithString:nsstring使用nsstring代替range指定的字符串-(void)replaceOccurrencesOfString:nsstringwithString:nsstring2 Options:ops range:range根据指定选项opts,使用指定range中的nsstring2替换所有的nsstring45.10.3 数组对象在程序设计中数组是使用非常频繁的。Foundation框架提供了NS数组类型,NS数组类型包括可修改的和不可修改的数组两类,只能存放相关的对象类型,提供了基本的数组操作方法,对数组的相关操作进行了封装。本节主要讲解数组对象的相关操作。46.10.3.1 数组的定义在程序设计的过程中,经常会处理一些数据类型相同的变量,为了方便,Objective-C提供了数组这一结构。47.10.3.2 数组的声明数组的声明和变量的声明类似。48.10.3.2 数组的声明49.10.3.2 数组的声明50.10.3.2 数组的声明51.10.3.2 数组的声明52.1.数组大小若对数组中的所有元素都赋予了初始值,可以不用指定数组的大小,系统将自动根据赋值的个数来确定数组的大小。53.2.部分元素初始化若只对数组中的部分元素赋予初始值,则系统会自动为其他元素赋初始值0。54.3.不初始化若只声明数组,而不为数组赋值,则数组中的元素值是不确定的。55.4.数组元素的大小数组的大小只能是常量,而不能使用变量。56.10.3.3 数组的引用在Objective-C语言中,一维数组的引用其实就是对一维数组元素的使用。57.10.3.3 数组的引用58.10.3.4 二维数组的声明和定义二维数组有两个下标。二维数组中的元素和一维数组中的元素一样,具有同样的数据类型。59.10.3.4 二维数组的声明和定义60.10.3.5 二维数组初始化的方法二维数组初始化的形式时多种多样,接下来就常用的几种形式给大家做一简单的讲解。61.10.3.5 二维数组初始化的方法62.10.3.5 二维数组初始化的方法63.10.3.5 二维数组初始化的方法64.10.3.6 二维数组的引用二维数组的引用形式。65.10.3.6 二维数组的引用66.10.3.7 字符数组的含义字符数组的含义。67.10.3.7 字符数组的含义68.10.3.8 字符数组初始化字符数组初始化分为两种,一种是逐个给字符数组赋值,一个种是用字符串直接给字符数组赋值。接下成我们主要讲解这两种赋值方式。69.1.逐个为字符数组赋值每个字符会依次赋值给数组中的每个元素。70.2.用字符串直接给字符数组赋值直接将字符串赋给字符数组来初始化。系统会依次读取字符串中的每个字符,赋值给数组每个元素,并在字符串的的结尾处加一个字符即结束符0作为一个数组元素。71.10.3.9 字符数组的引用字符数组的输入输出有来那个中形式。72.10.3.10不可修改的数组当我们要使用不可修改的数组时,就要使用NSArray来进行操作。在程序中要使用数组对象就要在开头插入数组对象的头文件。73.1.nil和Nilnil在objc/objc.h中定义。nil表示一个Objective-C对象,这个对象所指的内容为空。74.1.nil和Nil75.2.声明和创建数组在不可修改的数组中,我们可用“arrayWithObjects”类方法对数组进行初始化。例如我们给一数组对象city进行创建和初始化。76.2.声明和创建数组77.3.不可变的数组的使用78.3.不可变的数组的使用79.3.不可变的数组的使用80.3.不可变的数组的使用方法方法说明明+(id)arryWithObjects:obj1,obj2,nil创建一个新的数组,obj1,obj2是他的数组元素对象,以nil对象结尾-(BOOL)containsObject:obj确定数组中是否包含对象obj-(NSUInteger)count数组中元素的个数-(NSUInteger)indexOfObject:obj第一个包含数组元素的索引号-(id)objectAtIndex:i存储在位置i的对象-(void)makeObjectsPerformSelector:(SEL)selector将selector指示的消息发送给数组中的每个元素-(NSArray*)sortedArrayUsingSelector:(SEL)selector根据selector指定的比较方法对数组进行排序-(BOOL)writeToFile:path atomically:(BOOL)flag将数组写入指定的文件中,如果flag为YES,则需要先创建一个临时文件81.10.3.11可修该的数组NSArray是一个静态的使用,我们不能在数组中添加和删除元素。所以Objective-C提供了NSMutableArray来动态的管理这些数组。NSMutableArray是NSArray的子类,所以继承了NSArrayde中的所有方法,又有自己独特的方法。接下来我们主要讲解NSMutableArray中的这些独特的方法。82.1.创建和初始化可修改的数组创建和初始化为可修改的数数组的形式。83.2.添加一个元素addObject是在数组中添加一个元素。84.3.删除指定的元素removeObject是从数组中删除指定的元素。85.4.删除所有元素removeAllObjects是将数组中的所有元素删除。86.5.在指定位置添加新元素inserObject是在指定位置为数组添加新元素。87.5.在指定位置添加新元素方法方法说明明+(id)array创建一个空数组+(id)arrayWithCapacity:size创建一个数组,指定容量为size+(id)initCapacity:size初始化一个新分配的数组,指定容量为size-(void)addObject:obj将对象obj添加到数组末尾-(void)inserObject:obj atIndex:i将对象obj插入数组的i元素-(void)replaceObjectAtIndex:i withObject:obj将数组中序号为i的对象用对象obj替换-(void)removeObject:obj从数组中删除所有是obj的对象-(void)removeObjectAtIndex:i从数组中删除索引为i的对象-(void)sortUsingSelector:(SEL)selector用selector指示的比较方法将数组排序88.10.4 字典对象我们可以用数组存放有序对象的集合,但是要存放具有关键字的对象的集合使用数组是不够的。所以Objective-C语言用提供了一个新的对象叫做字典。使用字典可以存放具有关键字的对象的集合。字典可分为不可修改的字典和可修改的字典两种。本节将主要讲解字典的相关知识。89.10.4.1 不可修改的字典字典中的每一项都有都有一个关键字和一个值,简称“键-值”。关键字在每个字典内是唯一的,但值可以是相同的,也可以是不同的。当我们要使用不可修改的字典时,就要使用NSDictionary来进行操作。在程序中要使用字典就要在开头插入字典的头文件。90.1.字典的创建和初始化在不可修改的字典中,我们可用“dictionaryWithObjectsAndKeys”类方法进行初始化。例如我们employees字典进行创建和初始化。91.2.获得字典中“键-值”的个数count是获得字典中“键-值”的个数。92.3.查找某一关键字对应的值objectForKey是在字典中查找某个关键字所对应的值。如果所对应关键字的值不存在,就返回nil。93.3.查找某一关键字对应的值方法方法说明明+(id)dictionaryWithObjectsAndKeys:obj1,key1,obj2,key2,nil顺序添加对象和键值来创建字典,注意结尾是nil-(id)initWithObjectsAndKeys:obj1,key1,obj2,key2,nil初始化一个新分配的字典,顺序添加关键字和值,结尾是nil-(unsigned int)count返回字典中“键-值”对数-(NSEnumerator*)keyEnumerator返回字典中所有的键到一个NSEnumerator对象-(NSArray*)keysSortedByValueUsing Selector:(SEL)selector将字典中所有的键按照selector指定的方法进行排序,并将排序的结果返回-(NSEnumerator*)objectEnumerator返回字典中所有的值到一个NSEnumerator类型对象-(id)objectForKey:key返回指定键的值94.10.4.2.可修改的字典不可修改的字典和前面所说的不可修改的数组一样,不能动态的删除和添加,可修改的字典(NSDictionary)解决了这一难题。接下来我们主要讲解可修改字典的一些功能。95.1.动态字典的声明和初始化动态字典声明和初始化的形式。96.2.设置值和键setObject是用来设置值和键的。97.3.删除键所指定的值removeObjectForkey是用来删除键所指定的值的。98.4.删除所有的元素removeAllObjects是删除字典对象中的所有的元素。99.4.删除所有的元素方法方法说明明+(id)dictionaryWithCapacity:size创建一个size大小的可修改字典-(id)initWithCapacity:size初始化一个size大小的可修改字典-(void)removeAllObjects删除字典中的所有元素对象-(void)removeObjectForKey:key删除字典中的key位置的值-(void)setObject:obj forKey:key添加(key,obj)到字典中;若key已存在,则替换值为Obj100.10.5 集合对象NSArray类提供了一个可用于存储有序对象的集合的集合,NSSet提供了一个可用于无序对象的集合的集合。在集合中分为可修改的集合和不可修改的集合两种。本节将主要讲解关于集合对象操作的相关知识。101.10.5.1 不可修改的集合当我们要使用不可修改的集合时,就要使用NSSet来进行操作。在程序中要使用集合就要在开头插入集合的头文件。102.1.不可修改的集合对对象的创建和初始化在不可修改的集合中,我们可用“setWithobjects”类方法进行初始化。例如,我们创建了一个set的集合,将该集合进行初始化。103.2.获得集合元素的个数count在集合中的功能功能是获得集合中元素的个数。104.3.判断两个集合是否相等isEqualToSet是判断两个集合是否相等,如果BOOL就为“YES,不相等BOOL的值就为“NO”。105.3.判断两个集合是否相等方法方法说明明+(id)setWithObjects:obj1,obj2,nil使用一组元素对象创建新集合-(id)initWithObjects:obj1,obj2,nil使用一组元素对象初始化新分配的集合-(NSUInteger)count返回集合的元素个数-(BOOL)containsObject:obj确定集合是否包含元素对象obj-(BOOL)member:obj确定集合是否包含元素对象obj-(NSEnumerartor*)objectEnumerator返回集合中所有元素对象到一个NSEnumerartor类型的对象-(BOOL)isSubsetOfSet:nsset判断是否是一个集合nsset的子集-(BOOL)intersectsSet:nsset判断两个集合的交集是否存在至少一个元素-(BOOL)isEqualToSet:nsset判断两个集合是否相等106.10.5.2 可修改的集合我们需要对集合中的元素对象进行添加删除等操作在NSSet中是不行的,所以我们来学习可修改的集合NSMutableSet的操作。107.1.创建可修改的集合我们在使用可修改的集合时,必须要创建集合,创建集合的形式有两种,一个是不带任何参数的创建,一个是带有固定长度的创建。108.1.创建可修改的集合109.2.将元素对象添加到集合中addObject是在集合中添加元素对象。110.3.删除集合中的元素对象removeObject是删除集合中的元素对象。111.4.删除集合中的所有元素removeAllObjects是将集合中的所有元素删除。112.5.在集合中元素对象添加到另一个集合中unionSet是将一个集合对象的元素添加到另一个集合对象中。113.5.在集合中元素对象添加到另一个集合中方法方法说明明-(id)setWithCapacity:size创建一个有size大小的新集合-(id)initWithCapacity:size初始化一个新分配的集合,大小size-(void)addObject:Obj将元素对象添加到集合中-(void)removeObject:obj从集合删除指定的元素对象obj-(void)removeAllObjects删除集合中所有的元素对象-(void)unionSet:nsset将nsset(另一个集合)的所有元素对象添加到集合-(void)minusSet:nsset从集合中去掉所有nsset(另一个集合)中的元素-(void)interectSet:nsset集合和nsset另一个集合)做交集114.10.6 小结本章主要讲解了一些关于Foundation框架的基本数据类型,大家要了解数字对象的使用。本章的重点是通过可以对字符串对象、数组对象、字典对象以及集合的不可修改的类和可修改的类的使用中熟练掌握它们其中的方法。115.
展开阅读全文