有没有办法在Objective-C中合并两个NSMutableArray?

20

我有两个填充了数据对象的NSMutableArray。如何比较这两个数组并在发现任何更改时合并。

例如: 数组1 = index(0) userName = {'a',1,'address'} index(1) userName = {'b',2,'address'}

数组2 = index(0) userName = {'c',3,'address'} index (1) userName = {'b',2,'address'}

结果是: 数组 = index(0) userName = {'a',1,'address'} index (1) userName = {'b',2,'address'} index(2) userName = {'c',3,'address'}

请帮忙。

2个回答

52

一个简单的方法是使用集合:

NSMutableSet *set = [NSMutableSet setWithArray:array1];
[set addObjectsFromArray:array2];

NSArray *array = [set allObjects];

尽管你之后需要自己对 array 进行排序。

(注:我使用小写名称表示变量,这通常是惯例)。


这个解决方案不能返回自定义对象的唯一数组。有什么线索可以让它工作吗? - Vibhor Goyal
1
回答我上面的问题:我错过了为我的自定义类创建isEqual方法。这是我做的方式:https://dev59.com/0HVC5IYBdhLWcg3wjx5d - Vibhor Goyal

12
NSArray *array1, *array2;

...

MSMutableArray *result = [array1 mutableCopy];
for (id object in array2)
  {
  [result removeObject:object];  // make sure you don't add it if it's already there.
  [result addObject:object];
  }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接