NSMutableArray Class Reference

        NSMutableArray是NSArray的子类,在NSArray的基础上扩展了一系列接口,使不可变得NSArray数组成为可变的NSMutableArray数组。

关于NSArray的介绍详见我的另一篇博文NSArray Class Reference


初始化

+ arrayWithCapacity:
+ arrayWithContentsOfFile:
+ arrayWithContentsOfURL:
- init
- initWithCapacity:
- initWithContentsOfFile:
- initWithContentsOfURL:

#pragma mark 测试数据
- (NSString *)testData {

    // 获取应用中Document文件夹
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    // 测试数据
    NSArray *array = [NSArray arrayWithObjects:@"阳君", @"937447974", nil];
    NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"test.plist"];
    BOOL write = [array writeToFile:filePath atomically:YES]; // 输入写入
    NSLog(@"writeToFile:%d", write);

    return filePath;

}

#pragma mark 初始化
- (void)testCreatingAndInitializing {

    NSString *filePath = [self testData];

    // (+)创建
    NSMutableArray *mArray = [NSMutableArray arrayWithCapacity:1];
    // 根据文件路径创建数组
    mArray = [NSMutableArray arrayWithContentsOfFile:filePath];
    mArray = [NSMutableArray arrayWithContentsOfURL:[NSURL URLWithString:filePath]];

    // (-)创建
    mArray = [[NSMutableArray alloc] initWithCapacity:1];
    mArray = [[NSMutableArray alloc] initWithContentsOfFile:filePath];
    mArray = [[NSMutableArray alloc] initWithContentsOfURL:[NSURL URLWithString:filePath]];

}

 

增加

- addObject:
- addObjectsFromArray:
- insertObject:atIndex:
- insertObjects:atIndexes:

#pragma mark 增加数据
- (void)testAdding {

    NSMutableArray *mArray = [NSMutableArray array];

    // 增加单一数据
    [mArray addObject:@"阳君"];

    // 批量添加数据
    NSArray *array = [NSArray arrayWithObjects:@"1", @"2", nil];
    [mArray addObjectsFromArray:array];

    // 指定位置插入单一数据
    [mArray insertObject:@"IOS" atIndex:1];

    // 指定位置插入多个数据
    NSRange range = {1, array.count};
    NSIndexSet *indexSet = [[NSIndexSet alloc] initWithIndexesInRange:range];
    [mArray insertObjects:array atIndexes:indexSet];

}

 

删除

- removeAllObjects
- removeLastObject
- removeObject:
- removeObject:inRange:
- removeObjectAtIndex:
- removeObjectsAtIndexes:
- removeObjectIdenticalTo:
- removeObjectIdenticalTo:inRange:
- removeObjectsInArray:
- removeObjectsInRange:

#pragma mark 删除数据
- (void)testRemoving {

    NSMutableArray *mArray = [NSMutableArray arrayWithObjects:@"阳君", @"937447974", @"IOS", nil];

    // 删除所有元素
    [mArray removeAllObjects];

    // 删除最后一个元素
    mArray = [NSMutableArray arrayWithObjects:@"阳君", @"937447974", @"IOS", nil];
    [mArray removeLastObject];

    // 根据位置删除对象
    mArray = [NSMutableArray arrayWithObjects:@"阳君", @"937447974", @"IOS", nil];
    [mArray removeObjectAtIndex:0];

    // 根据数组删除对象
    mArray = [NSMutableArray arrayWithObjects:@"阳君", @"IOS", @"937447974", @"IOS", nil];
    NSArray *array = [NSArray arrayWithObjects:@"IOS",@"阳君", nil];
    [mArray removeObjectsInArray:array];

    // 根据对象删除
    mArray = [NSMutableArray arrayWithObjects:@"阳君", @"IOS", @"937447974", @"IOS", nil];
    [mArray removeObject:@"IOS"];
    // 或
    mArray = [NSMutableArray arrayWithObjects:@"阳君", @"IOS", @"937447974", @"IOS", nil];
    [mArray removeObjectIdenticalTo:@"IOS"];

    // 删除指定范围内的对象
    NSRange range = {0, 2};// 第0个位置开始,连续2个
    mArray = [NSMutableArray arrayWithObjects:@"阳君", @"IOS", @"937447974", @"IOS", nil];
    [mArray removeObject:@"IOS" inRange:range];
    // 或
    mArray = [NSMutableArray arrayWithObjects:@"阳君", @"IOS", @"937447974", @"IOS", nil];
    [mArray removeObjectIdenticalTo:@"IOS" inRange:range];

    // 删除指定NSRange范围内的对象,批量删除
    mArray = [NSMutableArray arrayWithObjects:@"阳君", @"937447974", @"IOS", nil];
    [mArray removeObjectsInRange:range];
    // 或
    mArray = [NSMutableArray arrayWithObjects:@"阳君", @"937447974", @"IOS", nil];
    NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:range];
    [mArray removeObjectsAtIndexes:indexSet];

}

 

替换

- replaceObjectAtIndex:withObject:
- setObject:atIndexedSubscript:
- replaceObjectsAtIndexes:withObjects:
- replaceObjectsInRange:withObjectsFromArray:range:
- replaceObjectsInRange:withObjectsFromArray:
- setArray:

#pragma mark 替换对象
- (void)testReplacing {

    NSMutableArray *mArray = [NSMutableArray arrayWithObjects:@"阳君", @"937447974", @"IOS", nil];
    NSArray *array = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];
    NSRange range = {0, array.count};// 第0个位置开始,连续count个
    NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:range];

    // 指定位置替换对象
    [mArray replaceObjectAtIndex:0 withObject:@"yangj"];
    // or
    [mArray setObject:@"yangj" atIndexedSubscript:0];

    // 数组替换
    [mArray setArray:array];

    // 用array替换数组中指定位置的所有元素
    mArray = [NSMutableArray arrayWithObjects:@"阳君", @"937447974", @"IOS", nil];
    [mArray replaceObjectsInRange:range withObjectsFromArray:array];
    // or
    mArray = [NSMutableArray arrayWithObjects:@"阳君", @"937447974", @"IOS", nil];
    [mArray replaceObjectsAtIndexes:indexSet withObjects:array];

    // 局部替换,使用array中的部分元素替换目标数组指定位置的元素
    mArray = [NSMutableArray arrayWithObjects:@"阳君", @"937447974", @"IOS", nil];
    range.length = 2;
    [mArray replaceObjectsInRange:range withObjectsFromArray:array range:range];

}

 

过滤

- filterUsingPredicate:

#pragma mark 数组过滤
- (void)testFiltering {

    NSMutableArray *mArray = [NSMutableArray arrayWithObjects:@"阳君", @"937447974", @"IOS", nil];

    // 使用过滤器过滤数组中的元素
    NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(id  _Nonnull evaluatedObject, NSDictionary<NSString *,id> * _Nullable bindings) {
        NSLog(@"%@", evaluatedObject);
        if ([@"937447974" isEqualToString:evaluatedObject]) {
            return YES;
        }
        return NO;
    }];
    [mArray filterUsingPredicate:predicate];

}

 

排序

- exchangeObjectAtIndex:withObjectAtIndex:
- sortUsingDescriptors:
- sortUsingComparator:
- sortWithOptions:usingComparator:
- sortUsingFunction:context:
- sortUsingSelector:

#pragma mark 排序
- (void)testSorting {

    NSMutableArray *mArray = [NSMutableArray arrayWithObjects:@"阳君", @"937447974", @"IOS", nil];

    // 交换两个位置的数据
    [mArray exchangeObjectAtIndex:0 withObjectAtIndex:1];

    // 对象自带的方法排序
    [mArray sortUsingSelector:@selector(compare:)];

    // Function排序
    [mArray sortUsingFunction:mSortByFunction context:nil];

    // block排序
    [mArray sortUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
        return [obj1 compare:obj2];
    }];

    [mArray sortWithOptions:NSSortConcurrent usingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
        return [obj1 compare:obj2];
    }];

}

 


其他

参考资料

NSMutableArray Class Reference

 

文档修改记录

时间描述
2015-10-15根据IOS9的NSMutableArray API总结

 


版权所有:http://blog.csdn.net/y550918116j

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值