Cocoa Touch基础框架提供比较常用的容器类对象:NSArray 、NSDicitonary、NSSet、NSindex
1.NSArray和它的子类NSMutableArray
它们相当于数组,可以持有不同类型的Objective-c对象,其他类型。比如说C类型的整型、浮点型、枚举型和结构体指针等,都不会被它们支持。同时nil也不能用作存储对象,应为它被看作是整个数组的结束符。
NSArray一旦被创建,就不能被修改,不能再进行添加、删除、插入和替换操作。
NSMutableArray是动态的可以随意修改里面的对象。
如果要复制数组的话:
NSArray *array=[NSArray arraywithArray:array1];
如果要获取数组的长度:
int length=[array count];
如果访问数组中的特定位置的一个对象:
NSString *mystring=[array objectAtIndex:index];
如果要查看是否包含一个指定的对象:
BOOL isFound=[array containsObject:对象];
如果要得到一个对象在数组中的位置:
int index=[array indexOfObject:对象];
下面是书上的例子:
NSArray *array=[NSArray arrayWithObjects:@"one",@"two",@"three", nil];
NSEnumerator *enumerator=[array objectEnumerator];//生成枚举对象
id obj;
while (obj=[enumerator nextObject]) {//nextObject方法返回Array里的下一个对象,借助while循环使可以遍历所有对象
NSLog(@"%@",obj);
}
NSMutableArray可以对里面的对象进行修改。
NSString *str1=@"one";
NSString *str2=@"two";
NSString *str3=@"three";
NSString *str4=@"four";
NSMutableArray *myarray=[[NSMutableArray alloc]initWithObjects:str1,str2,str3, nil];
//使用代码在可变数组增加对象
[myarray addObject:str4];
//可以在开始处增加对象
[myarray insertObject:str4 atIndex:0];
//可以替换数组中一个特定的对象
[myarray replaceObjectsAtIndexes:0 withObjects:str4];
//删除一个对象
[myarray removeObjectAtIndex:0];
//删除多个对象
NSRange range=NSMakeRange(0, 2);
[myarray removeObjectsInRange:range];
//删除所有对象
[myarray removeAllObjects];
2.NSDictinonary
按照关键值无序集合的方式来存储对象,每一个对象都有一个关键值,用户可以用它来访问相应的对象。
NSDictionary的每个键-值对包含了用于键的一个NSString和用于值的一个objective-c对象,字典中的键必须是唯一的,值不需要唯一的。
NSDictionary一旦被创建就不能被修改,不能再进行添加,修改和删除插入操作。NSMutableDictionary则是动态的。在创建字典的时候要用nil来结束。
查看字典中有多少元素:
int dictionary=[myDictionary count];
访问字典中的一个值:
NSArray *array1=[myDictionary objectForKey:@"值"];
从一个字典获取键
NSArray *key=[myDictionary allkeysForObject:array1];
获取字典中的所有值的一个数组:
NSArray *values=[myDictionary allValues];
也可以向NSArray枚举出所有的内容
For(id key in myDicitionary){
NSlog(@“key:%@,value:%@”,key,[myDicitonary objectForKey:key]);
}
如果字典只包含属性列表对象(NSData,NSDate,NSNumber,NSString,NSArray或NSDictionary),可以将其保存到一个文件中:
NSString *filePath=[[[NSBundle mainBundle] resourcePath]stringByAppendingPathComponent:@"dict.txt"];
BOOL sunccess=[myDictionary writeToFile:filePath Atomically:YES];//将字典内容写到文件中
相反的话,可以使用以下代码用一个文件内容来填充一个字典:
NSDictonary *mydDict2=[NSDictonary dictionaryWithContensOfFile:filePath];
3.NSSet
它是一个无序的对象集合,NSSet对象里的值都是唯一的。NSSet一旦创建就不能被更改,如果要改变的话,可以使用NSMutableSet;
4.NSIndexSet和NSMutableSet
用户可以创建索引集合,进行批处理。