ios开发之NSMutableArray

来源:互联网 发布:淘宝店铺装修模块 编辑:程序博客网 时间:2024/06/05 14:24

NSMutableArray用于可变数组操作。

初始化

- (instancetype)initWithCapacity:(NSUInteger)numItems

初始化容量。参数numItems为容量大小。

- (instancetype)init

初始化。等于调用[self initWithCapacity: 0];

- (instancetype)initWithObjects:(const ObjectType _Nonnull [_Nullable])objects count:(NSUInteger)cnt

根据对象序列初始化。

构造

 + (instancetype)arrayWithCapacity:(NSUInteger)numItems;

构造数组,初始化其容量。

添加

- (void)addObject:(ObjectType)anObject;

添加对象。如果参数anObject为nil,抛出异常。否则,添加进数组。

- (void)addObjectsFromArray:(NSArray<ObjectType> *)otherArray;

添加数组。如果参数otherArray为nil,抛出异常。否则,添加进数组。

插入

- (void)insertObject:(ObjectType)anObject atIndex:(NSUInteger)index;

插入对象。参数index为插入下标,参数anObject为插入对象。如果index大于数组长度,则抛出异常。

- (void)insertObjects:(NSArray<ObjectType> *)objects atIndexes:(NSIndexSet *)indexes;

插入对象数组。参数objects 为对象数组,参数indexes为索引集合。
NSIndexSet是一个唯一的,有序的,无符号整数的集合。

NSMutableArray *arr=[[[NSMutableArray alloc] initWithCapacity:10] autorelease];[arr addObject:@"000"];[arr addObject:@"111"];[arr addObject:@"222"];[arr addObject:@"333"];[arr addObject:@"444"];[arr addObject:@"555"];NSMutableIndexSet *set=[[[NSMutableIndexSet alloc] init] autorelease];[set addIndex:3];[set addIndex:1];NSArray *arr2=[[NSArray alloc] initWithObjects:@"aaa",@"bbb", nil];[arr insertObjects:arr2 atIndexes:set];NSLog(@"arr = %@",arr);

输出

2017-04-01 00:29:12.310 objc-base[1384:106249] arr = (    000,    aaa,    111,    bbb,    222,    333,    444,    555)

删除

- (void)removeObjectAtIndex:(NSUInteger)index;

删除对象。参数index为删除的下标。

- (void)removeLastObject;

删除最后一个对象。

- (void)removeObjectsInRange:(NSRange)range;

删除区间内的对象。

- (void)removeAllObjects;

删除所有对象。

- (void)removeObjectsAtIndexes:(NSIndexSet *)indexes;

删除索引集合对应的对象。
NSIndexSet是一个唯一的,有序的,无符号整数的集合。

NSMutableArray *arr=[[[NSMutableArray alloc] initWithCapacity:10] autorelease];[arr addObject:@"000"];[arr addObject:@"111"];[arr addObject:@"222"];[arr addObject:@"333"];[arr addObject:@"444"];[arr addObject:@"555"];NSMutableIndexSet *set=[[[NSMutableIndexSet alloc] init] autorelease];[set addIndex:3];[set addIndex:1];[set addIndex:5];[arr removeObjectsAtIndexes:set];NSLog(@"arr = %@",arr);    

输出

2017-03-31 23:54:23.759 objc-base[1271:100218] arr = (    000,    222,    444)
- (void)removeObjectsFromIndices:(NSUInteger *)indices numIndices:(NSUInteger)cnt

删除索引序列对应的对象。

- (void)removeObjectIdenticalTo:(ObjectType)anObject inRange:(NSRange)range;

删除区间内相同的对象。判断相同的方法是比较对象值。

- (void)removeObjectIdenticalTo:(ObjectType)anObject;

删除相同的对象。判断相同的方法是比较对象值。

- (void)removeObject:(ObjectType)anObject inRange:(NSRange)range;

删除区间内相同的对象。判断相同的方法是isEqual。

- (void)removeObject:(ObjectType)anObject;

删除相同的对象。判断相同的方法是isEqual。

- (void)removeObjectsInArray:(NSArray<ObjectType> *)otherArray;

删除数组内的对象。

替换

- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(ObjectType)anObject;

替换对象。参数index为替换的下标,参数anObject为替换的对象。如果index参数超出数组长度,则抛出异常。

- (void)replaceObjectsAtIndexes:(NSIndexSet *)indexes withObjects:(NSArray<ObjectType> *)objects;

替换索引集合对应的对象。

- (void)replaceObjectsInRange:(NSRange)range withObjectsFromArray:(NSArray<ObjectType> *)otherArray;

替换区间内的对象。首先删除区间内的对象,然后插入数组。

NSMutableArray *arr=[[[NSMutableArray alloc] initWithCapacity:10] autorelease];[arr addObject:@"000"];[arr addObject:@"111"];[arr addObject:@"222"]; [arr addObject:@"333"];[arr addObject:@"444"];[arr addObject:@"555"];NSArray *arr2=[[NSArray alloc] initWithObjects:@"aaa",@"bbb", nil];[arr replaceObjectsInRange:NSMakeRange(1, 1) withObjectsFromArray:arr2];NSLog(@"arr = %@",arr);

输出

2017-04-01 02:37:17.701 objc-base[1437:108286] arr = (    000,    aaa,    bbb,    222,    333,    444,    555)
- (void)replaceObjectsInRange:(NSRange)range withObjectsFromArray:(NSArray<ObjectType> *)otherArray range:(NSRange)otherRange;

替换区间内的对象。其实现为[self replaceObjectsInRange: aRange
withObjectsFromArray: [anArray subarrayWithRange: anotherRange]];

- (void)setObject:(ObjectType)obj atIndexedSubscript:(NSUInteger)idx

替换对象。若idx参数小于等于数组长度,则等同于replaceObjectAtIndex方法,若idx参数等于数组长度,则添加对象。

交换

- (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2;

交换两个对象。idx1和idx2为交换的下标。

设置数组

- (void)setArray:(NSArray<ObjectType> *)otherArray;

设置数组。参数otherArray为设置的数组。

排序

- (void)sortUsingFunction:(NSInteger (NS_NOESCAPE *)(ObjectType,  ObjectType, void * _Nullable))compare context:(nullable void *)context;

根据函数排序。

NSMutableArray *arr=[[[NSMutableArray alloc] initWithCapacity:10] autorelease];[arr addObject:@"000"];[arr addObject:@"111"];[arr addObject:@"555"];[arr addObject:@"333"];[arr addObject:@"444"];[arr addObject:@"222"];[arr sortUsingFunction:comp context:NULL];NSLog(@"arr = %@",arr);
NSUInteger comp(id obj1,id obj2,void *buf){    NSString *str1=obj1;    NSString *str2=obj2;   return [str1 compare:str2];}

输出

2017-04-01 03:08:04.375 objc-base[1487:112488] arr = (    000,    111,    222,    333,    444,    555)
- (void)sortUsingSelector:(SEL)comparator;

根据方法排序。

NSMutableArray *arr=[[[NSMutableArray alloc] initWithCapacity:10] autorelease];[arr addObject:@"000"];[arr addObject:@"111"];[arr addObject:@"555"];[arr addObject:@"333"];[arr addObject:@"444"];[arr addObject:@"222"];[arr sortUsingSelector:@selector(compare:)];NSLog(@"arr = %@",arr);
- (void)sortUsingComparator:(NSComparator NS_NOESCAPE)cmptr

根据比较块排序。

NSMutableArray *arr=[[[NSMutableArray alloc] initWithCapacity:10] autorelease];[arr addObject:@"000"];[arr addObject:@"111"];[arr addObject:@"555"];[arr addObject:@"333"];[arr addObject:@"444"];[arr addObject:@"222"];[arr sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {    return [obj1 compare:obj2];}];NSLog(@"arr = %@",arr);
- (void)sortWithOptions:(NSSortOptions)opts usingComparator:(NSComparator NS_NOESCAPE)cmptr

根据比较块排序。

typedef NS_OPTIONS(NSUInteger, NSSortOptions) {    NSSortConcurrent = (1UL << 0),  //并行排序    NSSortStable = (1UL << 4),      //串行排序};

文件相关

- (nullable NSMutableArray<ObjectType> *)initWithContentsOfFile:(NSString *)path;

根据文件初始化数组。

- (nullable NSMutableArray<ObjectType> *)initWithContentsOfURL:(NSURL *)url;

根据url初始化数组。

+ (nullable NSMutableArray<ObjectType> *)arrayWithContentsOfFile:(NSString *)path;

根据文件构造数组。

+ (nullable NSMutableArray<ObjectType> *)arrayWithContentsOfURL:(NSURL *)url;

根据url构造数组。

0 0
原创粉丝点击