所以我有多個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