Foundation 之 NSArray和NSMutableArray
2015-10-25 18:49
477 查看
NSArray数组
OC允许使用C的数组。但使用OC数组NSArray可以用来存储一系列对象。
数组是一列对象,数组有序地存储着一组对象,对象是OC中任意类型的对象。
数组初始化
NSArray * array = [[NSArray alloc] initWithObjects:@"one", @"two", @"three", nil];或者NSArray * array = @[@"one", @"two", @"three"];
// 数组的元素可以是任意的对象
// 数组中装的是对象的地址
打印数组-就是打印数组的每个元素
NSLog(@"%@", array);// "%@"打印出来的是array这个数组对象的description方法的返回值,
数组这个对象已经重写了description方法。
// "%@"打印对象,打印出来的是这个对象的description方法的返回值。
// NSArray的description方法就是把它所有元素对象的description的
返回值合在一起形成一个新的字符串,然后返回。
获取数组中某一元素对象
NSString * str1 = array[1];或者
NSString * str1 = [array objectAtIndex:1];
在数组中查找某一元素对象
int index = [array indexOfObject:@"two"]; // 返回查找对象的下标if(index == NSNotFound) {
// 如果没找到会返回一个特殊值NSNotFound
NSLog(@"not find the object");
}
创建一个数组并包含另个数组中的元素
NSArray * newArray = [array subArrayWithRange:NSMakeRange(1,2)]; // 新数组包括"two","three".数组的遍历
1.枚举器法
NSEnumerator * enumerator = [array objectEnumerator]; // 使用数组对象的枚举方法创建枚举器id obj; // 存储每一次获取的对象,因为对象可能不同,所以用id声明
while(obj = [enumerator nextObject]) {
NSLog(@"%@", obj);
}
2.快速枚举法
备注:所有的容器类都支持快速枚举。for(id obj in array) {
NSLog(@"%@", obj);
}
3.使用i值遍历
说明:array objectAtIndex:index 可以获取数组array下标为index的元素NSUInteger length = [array count]; // 返回数组array的元素个数
NSUInteger i;
for(i = 0; i < length; i++){
NSLog(@"%@", [array objectAtIndex:i]);
}
NSMutableArray可变数组
NSMutableArray可变数组类是NSArray数组的子类,除了继承父类的成员函数外,特有一些改变元素个数和顺序的方法:特有成员函数
数组初始化
NSMutableArray * array = [[NSMutableArray alloc] initWithObject:@"one",@"two",nil];// 继承父类NSArray的初始化方法
或
NSMutableArray * array = [[NSMutableArray alloc] init]; // 创建一个空数组
删除所有元素
[array removeAllObject];往数组里增加元素
[array addObject:@"one"];[array addObject:@"two"];
[array addObject:@"three"];
[array addObject:@"four"];
[array addObject:@"five"];
将新对象插入到指定位置
[array insertObject:@"zero" atIndex:0];删除最后一个元素
[array removeLastObject];删除指定的元素
[array removeObject:@"one"];// 如果在程序中以这种直接创建字符串的方式创建两个字符串,
如果两个字符串的内容完全相同,那么这两个字符串是同一个对象。
删除指定下标的元素
[array removeObjectAtIndex:1];交换指定下标的元素
[array exchangeObjectAtIndex:0 withObjectAtIndex:1];替换数组中指定下标的元素
[array replaceObjectAtIndex:0 withObject:@"zero_new"];注意,只要数组的元素的个数或者顺序发生改变,使用枚举法正序遍历都会发生崩溃,所以如果有增删,只能用i值遍历法遍历数组。
数组和字符串的联合使用
字符串切割为数组
NSString * str = @"I am a so bad man";NSArray * array = [str componentsSeparatedByString:@" "]; // 把字符串以“ ”(空格)分割成数组
数组拼接为字符串
NSString * newStr = [array componentsJoinedByString:@" "]; // 把数组元素以“ ”(空格)连接成字符串例子:将字符串"I am a so bad man"倒序输出"man bad so a am I"
NSString * str = @"I am a so bad man";NSArray * array = [str componentsSeparatedByString:@" "]; // 切割成数组
NSMutable * mutableArray = [[NSMutable alloc] init]; // 初始化一个可变数组
NSEnumerator * enumerator = [array reverseObjectEnumerator]; // 获取数组的逆序枚举器
NSString * obj;
while(obj = [enumerator nextObject]){
[mutableArray addObject:obj]; // 将逆序枚举器中的数组存入到可变数组中
}
NSString * newStr = [mutableArray componentsJoinedByString:@" "]; // 将逆序的数组拼接成字符串
相关文章推荐
- ruby 数组使用教程
- Ruby中的数组和散列表的使用详解
- C#实现AddRange为数组添加多个元素的方法
- C#动态调整数组大小的方法
- 详解Lua中的数组概念知识
- Perl中的列表和数组学习笔记
- 探索PowerShell (八) 数组、哈希表(附:复制粘贴技巧)
- C#中数组初始化与数组元素复制的方法
- C#交错数组用法实例
- Linux Shell 数组建立及使用技巧
- PowerShell数组的一些操作技巧
- C#通过yield实现数组全排列的方法
- C#不重复输出一个数组中所有元素的方法
- C#实现将数组内元素打乱顺序的方法
- Ruby简明教程之数组和Hash介绍
- C语言查找数组里数字重复次数的方法
- C语言柔性数组实例详解
- Perl中怎样从数组中删除某个值?
- 详解C++编程中用数组名作函数参数的方法
- C语言安全之数组长度与指针实例解析