ArrayUtils 是一系列扩展方法,扩展了 NSArray,并添加了一些缺少的方法,使得某些数组操作更加简单和简洁。
注意:'支持' 意味着该库与该版本已过测试。'兼容' 意味着该库应该在该 iOS 版本上运行(即它不依赖于任何不可用的 SDK 功能),但不再进行兼容性测试,可能需要调整或修复错误才能正确运行。
ArrayUtils 与 ARC 和非 ARC 项目都兼容。无需从 ARC 验证过程中排除 ArrayUtils 文件或使用 ARC 转换工具转换 ArrayUtils。
通常,NSArray 是线程安全的,而 NSMutableArray 则不是。ArrayUtils 不会改变这一点。您可以从多个线程安全地调用 NSArray 实例上的 ArrayUtils 方法,但在.MutableArray 上调用可能会导致不可预测的结果。
要使用 ArrayUtils 分类在应用程序中,只需将 ArrayUtils.h 和 ArrayUtils.m 文件(不需要示例文件和资源)拖放到项目中,并将头文件导入到您希望使用 ArrayUtils 功能的任何类中,或者将其包含在您的前缀文件.pch中以在项目中全局可用。
ArrayUtils 通过以下方法扩展 NSArray:
- (id)firstObject;
返回数组中的第一个对象,如果数组为空,则返回 nil。
- (NSArray *)arrayByRemovingObject:(id)object;
返回一个不含指定对象的数组副本。
- (NSArray *)arrayByRemovingObjectAtIndex:(NSUInteger)index;
返回一个不含指定索引位置的对象的数组副本。
- (NSArray *)arrayByRemovingLastObject;
返回一个不含最后一个对象的数组副本。如果数组为空,则不做任何操作。
- (NSArray *)arrayByRemovingFirstObject;
返回一个不含第一个对象的数组副本。如果数组为空,则不做任何操作。
- (NSArray *)arrayByInsertingObject:(id)object atIndex:(NSUInteger)index;
返回一个在指定索引位置插入指定对象的数组副本。
- (NSArray *)arrayByReplacingObjectAtIndex:(NSUInteger)index withObject:(id)object;
返回一个数组副本,其中指定索引处的对象被指定的对象替换。
- (NSArray *)shuffledArray
返回一个数组副本,使用arc4random随机洗牌对象。
- (NSArray *)mappedArrayUsingBlock:(id (^)(id object))block
返回一个新数组,通过对当前数组中的每个元素执行指定的块来形成,并返回结果。如果块对任何元素返回nil,则将省略从结果数组分发。如果块参数为nil,则返回原始数组的相同副本。
- (NSArray *)reversedArray;
返回一个数组副本,对象顺序被反转。
- (NSArray *)arrayByMergingObjectsFromArray:(NSArray *)array;
返回一个包含两个数组中所有未在另一个数组中找到的对象的数组(即两个数组的并集)。如果在合并过程中原始数组或提供数组已经包含重复项,这些重复项将不会在合并过程中删除。您可以使用 uniqueObjects
方法确保数组不包含重复项。
- (NSArray *)objectsInCommonWithArray:(NSArray *)array;
返回一个数组副本,其中包含自身与提供数组之间的公共元素(即两个数组的交集)。
- (NSArray *)uniqueObjects;
返回一个数组,其中只包含数组中每个唯一对象的第一次出现。顺序不受影响。
ArrayUtils 通过以下方法扩展NSMutableArray
- (void)removeFirstObject;
删除数组中的第一个对象。如果数组为空,则不执行任何操作。
- (void)shuffle;
使用arc4random随机洗牌数组。
- (void)reverse;
反转数组元素的顺序。
- (void)mergeObjectsFromArray:(NSArray *)array;
将提供数组中的任何对象追加到数组中,这些对象尚未在任何对象中存在。如果在原始数组或提供的数组中已经包含重复项,则将不会在合并过程中删除。您可以使用 removeDuplicateObjects
方法确保数组不包含重复项。
- (void)removeDuplicateObjects;
删除数组中每个唯一对象的除第一次出现之外的所有实例。顺序不受影响。