释放双眼,带上耳机,听听看~!
// NSArray 数组一旦创建,里面的元素就不能再改变了。
// NSMutableArray 可变数组,可以改变,增删改
// NSMutableArray,也是继承与NSArray的,因此,NSArray的方法,NSMutableArray都可以用!
// @interface NSMutableArray : NSArray
+ (void)NSMutableArrayCreateMethod
{
// 这是不允许的,子类指针无法指向父类的对象
// NSMutableString *str = @"Hello world";
// NSMutableArray *arr = @[@"one", @"two"];
NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:@"one", @"two", nil];
NSLog(@"array = %@",array);
// 注意,我们常用这个方法,将不可变字符数组,转换为可变字符数组。(实际上是创建了一个新的可变数组,数组里的内容,同array一样而已)
NSMutableArray *array1 = [NSMutableArray arrayWithArray:array];
NSLog(@"array1 = %@",array1);
// 创建一个空的可变数组。(init这个方法是NSArray的方法,但是我们很少用,因为,我们没必要创建一个元素为空得不可变数组)
NSMutableArray *array2 = [[NSMutableArray alloc] init];
NSLog(@"%lu",[array2 count]);
// 对应的加方法 (创建一个空的可变数组)
NSMutableArray *array3 = [NSMutableArray array];
NSLog(@"%lu",[array3 count]);
// 除了NSArray里的方法,我们还有NSMutableArray自有的初始化/创建方法。
// 预设一个数组元素个数为10的空的可变数组。
// 同字符串一样,虽然我们预设了一个长度,但是可以轻松突破这个预设长度,而没有任何压力。
NSMutableArray *array4 = [[NSMutableArray alloc] initWithCapacity:10];
NSLog(@"%lu",[array4 count]);
// 对应加方法
NSMutableArray *array5 = [NSMutableArray arrayWithCapacity:10];
NSLog(@"%lu",[array5 count]);
}
// 对于可变数组来说,就是增加,删除,修改,重设
+ (void)NSMutableArraySimpleMethod
{
NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:5];
NSLog(@"array = %@",array);
// 在数组所有元素的最后追加一个元素
[array addObject:@"one"];
[array addObject:@"two"];
[array addObject:@"three"];
NSLog(@"array = %@",array);
// 将subArray数组里的元素,追缴到array数组的所有元素的最后
NSArray *subArray = @[@"four", @"two", @"six"];
[array addObjectsFromArray:subArray];
NSLog(@"array = %@",array);
// 要注意和addObject:subArray 区别
// 将subArray做一个元素,追加到array数组所有元素后面
[array addObject:subArray];
NSLog(@"array = %@",array);
// 插入
// 将一个元素,插入到数组的索引位置
// 头插
[array insertObject:@"two" atIndex:0];
NSLog(@"array = %@",array);
// 中间插入
[array insertObject:@"two" atIndex:4];
NSLog(@"array = %@",array);
// 尾部插入,但是不能太过分。
[array insertObject:@"two" atIndex:[array count]];
NSLog(@"array = %@",array);
// 删除
// 删除数组里,所有相同的对象。
[array removeObject:@"two"];
NSLog(@"array = %@",array);
// 删除数组里,指定索引的元素。
[array removeObjectAtIndex:3];
NSLog(@"array = %@",array);
// 删除数组里最后一个元素
[array removeLastObject];
NSLog(@"array = %@",array);
// 删除数组里所有的元素
[array removeAllObjects];
NSLog(@"array = %@",array);
// 重设
// 用subArray数组里的元素,重新设置array的元素。
[array setArray:subArray];
NSLog(@"array = %@",array);
// 修改
// 将数组索引为1的替换成@"one"这个对象
[array replaceObjectAtIndex:1 withObject:@"one"];
NSLog(@"array = %@",array);
// 交换
// 将数组索引为0和2的两个对象交换位置
// 用这个方法,进行数组的冒泡/选择排序
[array exchangeObjectAtIndex:0 withObjectAtIndex:2];
NSLog(@"array = %@",array);
}
+ (void)NSMutableArraySort
{
NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:@"one", @"two", @"three", @"four", @"five", @"six", nil];
for (int i=0; i<[array count]-1; i++) {
for (int j=0; j<[array count]-i-1; j++) {
NSString *sj = [array objectAtIndex:j];
NSString *sj1 = [array objectAtIndex:j+1];
if ([sj compare:sj1] == NSOrderedAscending) {
[array exchangeObjectAtIndex:j withObjectAtIndex:j+1];
}
}
}
for (NSString *str in array) {
NSLog(@"%@",str);
}
}
+ (void)NSMutableArrayRemove
{
NSString *str = @" Don't trouble trouble, or trouble trouble you!";
NSCharacterSet *cs = [NSCharacterSet characterSetWithCharactersInString:@" ,!"];
NSArray *array = [str componentsSeparatedByCharactersInSet:cs];
NSMutableArray *newArray = [NSMutableArray arrayWithArray:array];
[newArray removeObject:@""];
NSLog(@"newArray = %@",newArray);
}