操纵数组内容(Objective-C 开发范例)

操纵数组内容(NSMutableArray)

问题

      你希望数组内容能够更具动态性,这样用户或你就可以在数组中添加、删除和插入对象了。然而,NSArray 是不可变类,因此一旦创建NSArray 对象,你就无法再对其中内容进行任何修改。
解决方案
       如果你认为所用的数组需要是动态的,那么请使用NSMutableArray。NSMutableArray是NSArray的子类,这样就可以像NSArray那样使用NSMutableArray了。但NSMutableArray提供了额外的一些方法,可以通过这些方法在数组列表中添加、删除和插入对象。
说明

      首先实例化NSMutableArray 类,可以使用任何构造函数进行实例化。要想创建新的空的NSMutableArray 对象,只需要使用alloc 与init 即可:

NSMutableArray *listOfLetters = [[NSMutableArray alloc] init];
      要想向数组中添加对象,需要向数组发送addObject:消息并且将想要添加到数组中的对象作为参数传递进去:
[listOfLetters addObject:@"A"];
[listOfLetters addObject:@"B"];
[listOfLetters addObject:@"C"];
       在使用addObject:时,总是会将对象添加到数组列表的末尾。如果想要将对象插入到数组中的其他位置,那么需要使用insertObject:atIndex:方法:
[listOfLetters insertObject:@"a"
                    atIndex:0];
       这会将对象插入到数组的首个位置。
       如果想要将某个索引位置的对象替换为另一个对象,那么可以使用replaceObjectAtIndex:withObject:方法。下面的代码展示了如何将字符C 替换为小写字母c:

[listOfLetters replaceObjectAtIndex:2
                         withObject:@"c"];
     要想交换数组中两个对象的位置,可以使用exchangeObjectAtIndex:withObjectAtIndex:方法:
[listOfLetters exchangeObjectAtIndex:0
                   withObjectAtIndex:2];
     当需要删除数组中的对象时,可以选择几种不同的方法。可以删除特定索引位置的对象,可以删除数组中的最后一个对象,还可以删除列表中的全部对象。如果拥有某个对象的引用,那么还可以通过对象引用删除数组中的这个对象。如下代码展示了删除对象的各种方式:

[listOfLetters removeObject:@"A"];
[listOfLetters removeObjectAtIndex:1];
[listOfLetters removeLastObject];
[listOfLetters removeAllObjects];

代码
程序清单main.m

#import <Foundation/Foundation.h>
int main (int argc, const char * argv[])
{
     @autoreleasepool {
     NSMutableArray *listOfLetters = [[NSMutableArray alloc] init];
     [listOfLetters addObject:@"A"];
     [listOfLetters addObject:@"B"];
     [listOfLetters addObject:@"C"];
     NSLog(@"OBJECTS ADDED TO ARRAY: %@", listOfLetters);
     [listOfLetters insertObject:@"a"
                         atIndex:0];
     NSLog(@"OBJECT 'a' INSERTED INTO ARRAY: %@", listOfLetters);
     [listOfLetters replaceObjectAtIndex:2
                              withObject:@"c"];
     NSLog(@"OBJECT 'c' REPLACED 'C' IN ARRAY: %@", listOfLetters);
     [listOfLetters exchangeObjectAtIndex:0
                        withObjectAtIndex:2];
     NSLog(@"OBJECT AT INDEX 1 EXCHANGED WITH OBJECT AT INDEX 2 IN ARRAY:%@", listOfLetters);
     [listOfLetters removeObject:@"A"];
     NSLog(@"OBJECT 'A' REMOVED IN ARRAY: %@", listOfLetters);
     [listOfLetters removeObjectAtIndex:1];
     NSLog(@"OBJECT AT INDEX 1 REMOVED IN ARRAY: %@", listOfLetters);
     [listOfLetters removeLastObject];
     NSLog(@"LAST OBJECT REMOVED IN ARRAY: %@", listOfLetters);
     [listOfLetters removeAllObjects];
     NSLog(@"ALL OBJECTS REMOVED IN ARRAY: %@", listOfLetters);
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值