iOS基础之容器

本文介绍了iOS开发中的四个重要容器类对象:NSArray及其动态子类NSMutableArray,NSDictionary,NSSet以及如何操作它们。NSArray不可变,NSMutableArray支持添加、删除等操作。NSDictionary以键值对形式存储对象,键必须唯一。NSSet存储唯一对象,而NSIndexSet用于批量处理索引。同时,文章展示了如何进行字典和数组的基本操作,以及如何将字典保存到文件和从文件加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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







评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值