所以我有多个NSArrays(实际上是5),我想创建一个新的NSArray,它只包含所有数组通用的对象。有没有一种有效的方法来做到这一点。我能想到的唯一方法是循环遍历所有比较每个对象的数组。多个NSArray的和普通的对象
1
A
回答
3
最后我用这里面工作的很好:
NSMutableSet *set = [NSMutableSet setWithArray:array];
NSMutableSet *set1 = [NSMutableSet setWithArray:array2];
NSMutableSet *set2 = [NSMutableSet setWithArray:array3];
NSMutableSet *set3 = [NSMutableSet setWithArray:array4];
NSMutableSet *set4 = [NSMutableSet setWithArray:array5];
[set intersectSet:set1];
[set intersectSet:set2];
[set intersectSet:set3];
[set intersectSet:set4];
NSArray *allArray = [set allObjects];
+0
我的目标是统计匹配实例的总数,并准备一个类似的情况,但不完全。感谢您发布它:我已经决定采用NSCountedSet方法,将所有NSArrays的内容转储到其中,并且它似乎正在工作。虽然我不确定可扩展性。再次感谢@gypsyDev – ChrisHaze 2015-07-22 20:17:27
3
为什么不创建一个NSSet(NSMutableSet,真的),将所有5个数组的内容转储到它中,然后从NSSet构造一个新的NSArray?
对不起,我最初误解了你的问题。是的,我认为你几乎必须循环遍历每一个来找到重复。但是实现起来并不是很糟糕(但是如果你的数组很庞大,运行时可能会稍微慢一些)。
下面是一些示例代码:
- (void) filterSet: (NSMutableSet*)set withArray: (NSArray*) array {
NSMutableSet* removals = [NSMutableSet setWithCapacity:[array count]];
for (id obj in set) {
if (! [array containsObject: obj]) {
[removals addObject: obj];
}
}
[set minusSet: removals];
}
NSMutableSet* mySet = [NSMutableSet setWithCapacity:[array1 count] * 5];
[mySet addObjectsFromArray: array1];
[self filterSet: mySet withArray: array2];
[self filterSet: mySet withArray: array3];
[self filterSet: mySet withArray: array4];
[self filterSet: mySet withArray: array5];
NSArray* filteredArray = [mySet allObjects];
相关问题
- 1. 多维NSArray对象
- 2. form_for普通对象
- 3. NSArray的对象和铸造
- 4. nsarray可以容纳多少个对象?
- 5. NSArray中的单个索引的多个对象
- 6. 从更普通的类生成对象
- 7. Ruby中的普通旧对象?
- 8. 的XCode/iOS版:NSCoding - 与普通对象
- 9. DataSnap“普通旧Delphi对象”和嵌套对象
- 10. 访问普通的老式Ruby对象在施普雷1.1
- 11. 使用普通的红宝石对象委托ActiveRecord对象
- 12. 将普通的旧对象转换为值对象
- 13. 过滤NSArray的对象
- 14. 充满bool对象的NSArray
- 15. 使用NSArray中的对象
- 16. NSArray对象的NSString值
- 17. NSArray的使用对象IOS
- 18. 搜索NSArictionary对象的NSArray
- 19. 通过NSArray对象循环索引
- 20. NSArray:添加多个具有相同值的对象
- 21. NSArray的多维NSArray?
- 22. JSON响应不是一个普通的对象
- 23. 如何获得的两组对象,从一个普通类
- 24. 从一个普通的对象获取属性在C#
- 25. 通过电子ipc的RegExp变成普通的对象
- 26. 对ASP.NET MVC中的普通对象无效的验证
- 27. jQuery DataTables:普通数组或对象
- 28. 如何乘以NSArray的各个对象并获得总和?
- 29. 对普通学生和非普通学生进行排序
- 30. NSArray的NSArray中的对象的属性的NSPredicate
我认为你必须通过他们循环... – 2011-04-10 00:12:03
你提到发现在评论一个简单的解决方案关于上一个问题。你能详细说明一下吗? – ChrisHaze 2015-07-22 03:40:08
@ChrisHaze啊对不起,我用我的解决方案编辑了我原来的问题。我把它添加为一个新的答案,并接受它是正确的。 :) – gypsyDev 2015-07-22 10:02:54