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
用户可以创建索引集合,进行批处理。
- iOS基础之容器
- STL之容器基础
- Java基础之容器
- java基础之 集合容器
- Java 基础 容器之List
- IOS开发基础篇之──Object-C Stack 容器
- IOS开发基础篇之──Object-C 实践Queue容器
- iOS基础-可变和不可变容器
- Java基础之容器(集合)
- Spring IOC容器之基础篇
- stl之set集合容器应用基础
- Java基础----Java容器之集合
- Java基础之容器综述篇
- java基础学习之持有对象(容器)
- docker基础命令之容器篇
- Java基础之-容器类概述
- 《学习笔记》之WEB基础--Web容器
- Flutter基础—常用控件之容器
- Android系统Recovery工作原理之使用update.zip升级过程分析(八)---升级程序update_binary的执行过程
- 5.5.1.1 类型批注、动作和语句块(TYPE ANNOTATIONS, ACTIONS, AND STATEMENT BLOCKS)
- 深入分析Nginx 502 504错误
- 无印良品推荐列表
- 程序员异地恋如何处理抓住对方的心
- iOS基础之容器
- Android EditText.setError() - 会弹出一个popupwindow,效果很好
- 字符串相似度比较
- 安装 Kali Linux 后需要做的 20 件事
- C++_重载、重写(覆盖)和隐藏的区别:
- NPOI HSSFHyperlink HyperlinkType.File 乱码(??)
- 从linux服务器下载文件
- Java&&接口嵌套
- oracle ebs 12.20 成功安装其过程失败日记及总结(1)