NSArray:
只能存放对象。不能存放C语言中基本的数据类型。如int/double/float等等
数组下标越界不会有警告,运行时会直接报错
// 不可变数组NSArray
// 在数组从存入nil需要使用NSNull,不可以直接存入nil,因为在数组中nil代表数组结束
NSNull *n = [NSNull null];
// 创建数组对象,并在其中添加几个NSString对象,nil代表数组的结束,不可能更改
NSArray *array1 = [NSArray arrayWithObjects:@"one", @"tow", n, @"three", nil];
NSArray *array2 = [NSArray arrayWithObject:@"呵呵,你真逗。。。。。"];
// 计算数组的长度
NSLog(@"array1 count : %ld", [array1 count]);
NSLog(@"array2 count : %ld", [array2 count]);
// 取出数组中得对象
// 简单的使用for循环通过下边来获取对象
for (int i = 0; i < [array1 count]; i++) {
NSLog(@"array1[%d] = %@", i, [array1 objectAtIndex:i]);
}
// 以消息嵌套的形式实例化一个NSArray对象
NSArray *array3 = [[NSArray alloc] initWithObjects:@"abc", @"def", @"haha", nil];
NSLog(@"array3 = %ld", [array3 count]);
NSLog(@"%@", array3); // 数组使用小括号来包括
// 释放内存
[array3 release];
// 可变数组NSMutableArray
// 通过arrayWithCapacity:来创建一个可变数组,指定长度为10
NSMutableArray *mutableArray1 = [NSMutableArray arrayWithCapacity:10];
// 使用类方法创建一个对象
mutableArray1 = [NSMutableArray arrayWithObjects:@"111", nil];
// 通过addObject对象添加对象
[mutableArray1 addObject:@"one"];
[mutableArray1 addObject:@"two"];
[mutableArray1 addObject:@"three"];
// 打印数组的长度
NSLog(@"mutableArray count = %ld", [mutableArray1 count]);
// 打印数组
NSLog(@"mutableArray %@", mutableArray1.description);
// 使用for循环打印数组
for (int i = 0; i < [mutableArray1 count]; i++) {
NSLog(@"mutableArray[%d] = %@", i, [mutableArray1 objectAtIndex:i]);
}
// 删除数组中得对象
// [mutableArray1 removeLastObject]; // 删除最后一个对象
// [mutableArray1 removeObject:@"111"]; // 删除指定名称的对象
[mutableArray1 removeObjectAtIndex:1]; // 删除指定位置的对象
// [mutableArray1 removeAllObjects]; // 删除全部对象
NSLog(@"mutableArray %@", mutableArray1.description);
// 向可变数组中插入对象, 插入的字符串中有空格的时候会被双引号包围
[mutableArray1 insertObject:@"new String" atIndex:2 ];
NSLog(@"mutableArray %@", mutableArray1.description);
// 替换数组中对象 // 存入中文时直接打印数组会出现"\U7231\U597d"这种形式,需要从数组中取出来才可以正常显示
[mutableArray1 replaceObjectAtIndex:3 withObject:@"爱好"];
NSLog(@"mutableArray %@", mutableArray1.description);
NSString *string = [mutableArray1 lastObject];
NSLog(@"%@", string);
// 数组的替换
// 数组的简写@[@"0", @"2"]
NSRange range = NSMakeRange(1, 2);
// 对应的进行替换
[mutableArray1 replaceObjectsInRange:range withObjectsFromArray:@[@"1111111", @"2222222"]];
NSLog(@"mutableArray %@", mutableArray1.description);
// 数组的排序
// 可变数组直接在原数组上进行排序,不可变数组排序后产生新的数组
NSMutableArray *array1 = [NSMutableArray arrayWithObjects:@"3", @"6", @"2", @"1", nil];
NSLog(@"%@", array1);
// 使用选择器进行比较数组,返回一个升序的数组
[array1 sortUsingSelector:@selector(compare:)];
NSLog(@"使用选择排序后: %@", array1);
// 使用sortUsingCompare:
[array1 sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
obj1 = @"1";
obj2 = @"2";
return NSOrderedDescending;
}];
NSLog(@"使用选择排序后: %@", array1);
// 用规定的描述对数组进行排序
// NSSortDescriptor *sd = [NSSortDescriptor sortDescriptorWithKey:nil ascending:NO];
// [array1 sortUsingSelector:[NSArray arrayWithObject:sd]];
// NSLog(@"%@", array1);
// 数组的遍历
// 创建数组
NSMutableArray *array1 = [NSMutableArray arrayWithObjects:@"3", @"6", @"2", @"1", nil];
// 可以通过枚举器和nextObject可以返回当前对象
// 使用NSEnumerator遍历对象,通过给数组发送objectEnumerator获取到整个数组的枚举器
NSEnumerator *enumerator = [array1 objectEnumerator];
// 储存数组中每个元素对象
id object = nil;
while (object = [enumerator nextObject]) { // 通过nextObject消息读取下一个元素对象
NSLog(@"%@", object);
}
// 使用 快速枚举 遍历数组取值
id object1 = nil;
for (object1 in array1) {
NSLog(@"%@", object1);
}