如何在Objective-C中组合两个数组?

Mos*_*she 70 objective-c ios

什么是JavaScript concat()函数的Objective-C等价物?

假设两个对象都是数组,你会如何组合它们?

gra*_*rks 209

NSArrayarrayByAddingObjectsFromArray:与JavaScript的.concat()方法或多或少相同:

NSArray *newArray=[firstArray arrayByAddingObjectsFromArray:secondArray];
Run Code Online (Sandbox Code Playgroud)

注意:如果firstArray是零,newArray则为零.可以使用以下方法修复此问题:

NSArray *newArray=firstArray?[firstArray arrayByAddingObjectsFromArray:secondArray]:[[NSArray alloc] initWithArray:secondArray];
Run Code Online (Sandbox Code Playgroud)

如果你想删除重复项:

NSArray *uniqueEntries = (NSArray *)[[NSSet setWithArray:newArray] allObjects];
Run Code Online (Sandbox Code Playgroud)

  • 答案可能存在问题,如果firstArray为nil但第二个数组不是,则newArray为nil. (12认同)
  • 当然,然后添加:`if(!firstArray)firstArray = @ [];` (7认同)
  • @Moshe它返回一个新的(不可变的)NSArray对象,并且不会改变原始数组,因此它在NSArray对象上工作正常. (4认同)
  • 这需要`firstArray`成为`NSMutableArray`吗? (3认同)

mea*_*ers 6

这是一种对称且简单的方法,只需从一个空数组开始:

NSArray* newArray = @[];
newArray = [newArray arrayByAddingObjectsFromArray:firstArray];
newArray = [newArray arrayByAddingObjectsFromArray:secondArray];
Run Code Online (Sandbox Code Playgroud)