NSArray和NSMutableArray整理与总结

一、NSArray

1.NSArray初始化方法

(1)NSArray内存初始化

NSArray *array = @[objects,...];
+ (instancetype)array;
+ (instancetype)arrayWithObject:(ObjectType)anObject;
+ (instancetype)arrayWithObjects:(const ObjectType [])objects count:(NSUInteger)cnt;
+ (instancetype)arrayWithObjects:(ObjectType)firstObj, ... NS_REQUIRES_NIL_TERMINATION;
+ (instancetype)arrayWithArray:(NSArray<ObjectType> *)array;

- (instancetype)initWithObjects:(ObjectType)firstObj, ... NS_REQUIRES_NIL_TERMINATION;
- (instancetype)initWithArray:(NSArray<ObjectType> *)array;
- (instancetype)initWithArray:(NSArray<ObjectType> *)array copyItems:(BOOL)flag;

(2)NSArray从文件或链接初始化

+ (nullable NSArray<ObjectType> *)arrayWithContentsOfFile:(NSString *)path;
+ (nullable NSArray<ObjectType> *)arrayWithContentsOfURL:(NSURL *)url;
- (nullable NSArray<ObjectType> *)initWithContentsOfFile:(NSString *)path;
- (nullable NSArray<ObjectType> *)initWithContentsOfURL:(NSURL *)url;

2.将NSArray写入文件或链接

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile; - (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically;

3.NSArray获取数组元素个数

@property (readonly) NSUInteger count;

4.NSArray获取数组元素或元素索引

(1)获取数组元素

①通过索引获取某个元素

- (ObjectType)objectAtIndex:(NSUInteger)index;

②获取第一个元素

@property (nullable, nonatomic, readonly) ObjectType firstObject NS_AVAILABLE(10_6, 4_0);

③获取最后一个元素

@property (nullable, nonatomic, readonly) ObjectType lastObject;

(2)获取元素索引

//返回第一个找到的,如果未找到则返回NSNotFound
- (NSUInteger)indexOfObject:(ObjectType)anObject;

5.NSArray判断和查找

(1)判断数组是否相等

- (BOOL)isEqualToArray:(NSArray<ObjectType> *)otherArray;

(2)判断数组中是否包含某个元素

- (BOOL)containsObject:(ObjectType)anObject;
- (nullable ObjectType)firstObjectCommonWithArray:(NSArray<ObjectType> *)otherArray;

6.NSArray操作

(1)获取数组部分元素组合

- (NSArray<ObjectType> *)subarrayWithRange:(NSRange)range;

(2)拼接数组

- (NSArray<ObjectType> *)arrayByAddingObject:(ObjectType)anObject; - (NSArray<ObjectType> *)arrayByAddingObjectsFromArray:(NSArray<ObjectType> *)otherArray;

(3)数组排序

- (NSArray<ObjectType> *)sortedArrayUsingFunction:(NSInteger (*)(ObjectType, ObjectType, void * __nullable))comparator context:(nullable void *)context;
- (NSArray<ObjectType> *)sortedArrayUsingFunction:(NSInteger (*)(ObjectType, ObjectType, void * __nullable))comparator context:(nullable void *)context hint:(nullable NSData *)hint;
- (NSArray<ObjectType> *)sortedArrayUsingSelector:(SEL)comparator;
- (NSArray<ObjectType> *)sortedArrayUsingComparator:(NSComparator)cmptr NS_AVAILABLE(10_6, 4_0);
- (NSArray<ObjectType> *)sortedArrayWithOptions:(NSSortOptions)opts usingComparator:(NSComparator)cmptr NS_AVAILABLE(10_6, 4_0);

(4)数组操作器

- (void)makeObjectsPerformSelector:(SEL)aSelector NS_SWIFT_UNAVAILABLE("Use enumerateObjectsUsingBlock: or a for loop instead"); - (void)makeObjectsPerformSelector:(SEL)aSelector withObject:(nullable id)argument NS_SWIFT_UNAVAILABLE("Use enumerateObjectsUsingBlock: or a for loop instead"); - (void)enumerateObjectsUsingBlock:(void (^)(ObjectType obj, NSUInteger idx, BOOL *stop))block NS_AVAILABLE(10_6, 4_0); - (void)enumerateObjectsWithOptions:(NSEnumerationOptions)opts usingBlock:(void (^)(ObjectType obj, NSUInteger idx, BOOL *stop))block NS_AVAILABLE(10_6, 4_0); - (void)enumerateObjectsAtIndexes:(NSIndexSet *)s options:(NSEnumerationOptions)opts usingBlock:(void (^)(ObjectType obj, NSUInteger idx, BOOL *stop))block NS_AVAILABLE(10_6, 4_0);

7.NSArray和NSString的互相转换

(1)NSString拆分为NAArray

- (NSArray<NSString *> *)componentsSeparatedByString:(NSString *)separator; - (NSArray<NSString *> *)componentsSeparatedByCharactersInSet:(NSCharacterSet *)separator NS_AVAILABLE(10_5, 2_0);

(2)NSArray拼接成NSString

- (NSString *)componentsJoinedByString:(NSString *)separator;

二、NSMutableArray

NSMutableArray继承自NSArray,所有NSArray方法都适用于NAMutableArray

1.NSMutableArray初始化

- (instancetype)initWithCapacity:(NSUInteger)numItems NS_DESIGNATED_INITIALIZER;
+ (instancetype)arrayWithCapacity:(NSUInteger)numItems;

2.NSMutableArray增、删、替换、交换、重置操作

(1)元素的增加

- (void)addObject:(ObjectType)anObject; - (void)addObjectsFromArray:(NSArray<ObjectType> *)otherArray; - (void)insertObject:(ObjectType)anObject atIndex:(NSUInteger)index; - (void)insertObjects:(NSArray<ObjectType> *)objects atIndexes:(NSIndexSet *)indexes;

(2)元素的删除

- (void)removeAllObjects; - (void)removeLastObject; - (void)removeObject:(ObjectType)anObject; - (void)removeObject:(ObjectType)anObject inRange:(NSRange)range; - (void)removeObjectsInArray:(NSArray<ObjectType> *)otherArray; - (void)removeObjectsInRange:(NSRange)range; - (void)removeObjectAtIndex:(NSUInteger)index; - (void)removeObjectsAtIndexes:(NSIndexSet *)indexes;

(3)元素的替换

- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(ObjectType)anObject; - (void)replaceObjectsInRange:(NSRange)range withObjectsFromArray:(NSArray<ObjectType> *)otherArray range:(NSRange)otherRange; - (void)replaceObjectsInRange:(NSRange)range withObjectsFromArray:(NSArray<ObjectType> *)otherArray; - (void)replaceObjectsAtIndexes:(NSIndexSet *)indexes withObjects:(NSArray<ObjectType> *)objects;

(4)元素的交换

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

(5)数组的重置

- (void)setObject:(ObjectType)obj atIndexedSubscript:(NSUInteger)idx NS_AVAILABLE(10_8, 6_0);
- (void)setArray:(NSArray<ObjectType> *)otherArray;

3.NSMutableArray排序

- (void)sortUsingFunction:(NSInteger (*)(ObjectType, ObjectType, void * __nullable))compare context:(nullable void *)context; - (void)sortUsingSelector:(SEL)comparator; - (void)sortUsingComparator:(NSComparator)cmptr NS_AVAILABLE(10_6, 4_0); - (void)sortWithOptions:(NSSortOptions)opts usingComparator:(NSComparator)cmptr NS_AVAILABLE(10_6, 4_0);

你可能感兴趣的:(NSMutableArray,NSArray)