Object-C学习(六)——Foundation框架(二)
三、NSArray和NSMutableArray
Foundation中的数组是一组有序的对象集合,通过索引下标获取到数组的中的各个元素。与字符串相同,数组也有可变和不可变数组之分。此外,数组中不可以存放基本数据类型,职能存放类的实例(对象)。如若需要将基本数据类型、结构体放入数组中,需要通过NSNumber、NSValue进行数据的”封装“。同事不能在NSArray中存储nil(对象的零值或NULL值)。
NSArray是静态的数组,就是它所指向的内容是不可改变的,它指向的一段内存区域,一旦初始化,不能通过它对该内存区域的数据进行修改,但是它可以读数据。
NSMuableArray是动态的,它是NSArray的子类,可以对所指向的内存区域内容进行更改,并可以增加数组内容。NSArray和NSMutableArray的第一个数据的下表为0。
NSArray *arr1 = [[NSArray alloc] initWithObjects:@"zhangsan",@"lisi",@"wangwu", nil]; NSArray *arr2 = [NSArray arrayWithObjects:@"zhangsan",@"lisi",@"wangwu", nil]; if ([arr1 isEqual:arr2]) NSLog(@"两个数组相等"); else NSLog(@"两个数组不相等"); NSString *str1 = @"zhangsan"; NSString *str2 = @"lisi"; NSString *str3 = @"wangwu"; NSArray *arr3 = [[NSArray alloc] initWithObjects:str1,str2,str3, nil]; if ([arr2 isEqual:arr3]) { NSLog(@"arr2与arr3相等!"); } NSArray *arr4 = [NSArray arrayWithArray:arr1]; NSString *str4 = [arr4 objectAtIndex:1]; NSLog(@"arr4下标为1的元素值是%@",str4); NSUInteger index = [arr4 indexOfObject:@"lisi"]; if (index == NSNotFound) { NSLog(@"没有找到此元素"); }else{ NSLog(@"找到目标元素,位置是%ld",index); }