@interface NSMutableArray (NSExtendedMutableArray)
增加
- (void)addObjectsFromArray:(NSArray *)otherArray;
//追加数组
[arr1 addObjectsFromArray:arr3];
- (void)insertObjects:(NSArray *)objects atIndexes:(NSIndexSet *)indexes;
arr1 = [NSMutableArray array];
arr3 = @[@"A",@"B"];
[arr1 addObject:@"1"];
[arr1 addObject:@"2"];
[arr1 addObject:@"3"];
NSMutableIndexSet *indexset = [[NSMutableIndexSet alloc]init];
[indexset addIndex:0];
[indexset addIndex:2];
[arr1 insertObjects:arr3 atIndexes:indexset];
//arr1 的0位与2位,插入arr3的obj,注意是arr3 中 一个插完插第二个。(arr3 的个数要与 indexset 一样多)
// arr3 是 A,B
// 第一次在0 位置插入A,第二次在新数组的基础上2位置插入B
NSLog(@"%@",arr1);
修改
交换2个位置
- (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2;
arr1 = [NSMutableArray array];
[arr1 addObject:@"1"];
[arr1 addObject:@"2"];
[arr1 addObject:@"3"];
[arr1 exchangeObjectAtIndex:1 withObjectAtIndex:2];
NSLog(@"%@",arr1);
重新设置
- (void)setArray:(NSArray *)otherArray;
- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)idx NS_AVAILABLE(10_8, 6_0);
//重新设置数组,不管多少,都变arr3
[arr1 setArray:arr3];
//设置某一个
[arr1 setObject:@"333" atIndexedSubscript:0];
替换
- (void)replaceObjectsAtIndexes:(NSIndexSet *)indexes withObjects:(NSArray *)objects;
- (void)replaceObjectsInRange:(NSRange)range withObjectsFromArray:(NSArray *)otherArray;
- (void)replaceObjectsInRange:(NSRange)range
withObjectsFromArray:(NSArray *)otherArray range:(NSRange)otherRange;
</pre><pre name="code" class="objc"> [arr1 replaceObjectAtIndex:1 withObject:@"?"];
NSMutableIndexSet *indexset = [[NSMutableIndexSet alloc]init];
[indexset addIndex:0];
[indexset addIndex:2];
[arr1 replaceObjectsAtIndexes:indexset withObjects:@[@"A",@"B"]];
[arr1 replaceObjectsInRange:NSMakeRange(0, 2) withObjectsFromArray:@[@"A",@"B",@"C"]];
[arr1 replaceObjectsInRange:NSMakeRange(0, 2) withObjectsFromArray:@[@"A",@"B",@"C"] range:NSMakeRange(2, 1)];
NSLog(@"%@",arr1);
移除
- (void)removeObject:(id)anObject;
- (void)removeObjectsAtIndexes:(NSIndexSet *)indexes;
- (void)removeObject:(id)anObject inRange:(NSRange)range;
- (void)removeObjectsInArray:(NSArray *)otherArray;
- (void)removeObjectsInRange:(NSRange)range;
- (void)removeAllObjects;
//删除 指定 obj
[arr1 removeObject:@"1"];
//删除指定位置
[arr1 removeObjectAtIndex:1];
//指定某段,删除指定 obj
[arr1 removeObject:@"1" inRange:NSMakeRange(1, 2)];
//删除与 arr3 中有的内容
[arr1 removeObjectsInArray:arr3];
//删除指定某段
[arr1 removeObjectsInRange:NSMakeRange(1, 2)];
//删光
[arr1 removeAllObjects];
- (void)removeObjectIdenticalTo:(id)anObject inRange:(NSRange)range;
- (void)removeObjectIdenticalTo:(id)anObject;
- (void)removeObjectsFromIndices:(NSUInteger *)indices numIndices:(NSUInteger)cnt NS_DEPRECATED(10_0, 10_6, 2_0, 4_0);
排序
自定义排序(阿西吧)
- (void)sortUsingFunction:(NSInteger (*)(id, id, void *))compare context:(void *)context;
- (void)sortUsingSelector:(SEL)comparator;
// [arr1 sortUsingFunction:(NSInteger (*)(__strong id, __strong id, void *)) context:<#(void *)#>];
// arr1 sortUsingSelector:<#(SEL)#>
常用排序
- (void)sortUsingComparator:(NSComparator)cmptr NS_AVAILABLE(10_6, 4_0);
- (void)sortWithOptions:(NSSortOptions)opts usingComparator:(NSComparator)cmptr NS_AVAILABLE(10_6, 4_0);
//常用遍历
[arr1 sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
NSComparisonResult result = [obj1 compare:obj2];
return result == NSOrderedDescending;//升序
}];
[arr1 sortWithOptions:NSSortStable usingComparator:^NSComparisonResult(id obj1, id obj2) {
NSComparisonResult result = [obj1 compare:obj2];
return result == NSOrderedDescending;//升序
}];
@end