iOS基础之容器

来源:互联网 发布:js指定浏览器打开网页 编辑:程序博客网 时间:2024/06/05 07:41

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

用户可以创建索引集合,进行批处理。







0 0