我新的iOS開發者,我想比較和改變屬性如何比較數組?並更改屬性?
數組1 =(object1,對象2,object3,object4) 數組2 =(對象2,object4,object5,object8)
比較數組1和Array2 如果Array2中有相同的對象,請更改對象中的屬性。
在這種情況下上面,對象2和Object4應該改變..
我應該怎麼辦?
請幫助我!
我新的iOS開發者,我想比較和改變屬性如何比較數組?並更改屬性?
數組1 =(object1,對象2,object3,object4) 數組2 =(對象2,object4,object5,object8)
比較數組1和Array2 如果Array2中有相同的對象,請更改對象中的屬性。
在這種情況下上面,對象2和Object4應該改變..
我應該怎麼辦?
請幫助我!
您可以使用設置此
NSMutableSet *array1Set = [NSMutableSet setWithArray:array1];
NSSet *array2Set = [NSSet setWithArray:array2];
[array1Set intersectSet:array2Set];
你現在有一組只是這是在兩個數組的對象。 現在你可以在集上使用enumerateObjectsUsingBlock:
來操縱對象或將集轉換回數組NSArray *filteredArray = [array1Set allObjects]
我認爲你必須在這種情況下搜索n*n
。遍歷Array1中的每個對象,都有一個嵌套循環,並將Array2中的每個項目與當前對象(在Array1中)進行比較。如果他們相同,那就改變你的屬性。
for (int i = 0; i < [array1 count]; i++)
for (int j = 0; j < [array2 count]; j++)
if ([array1 objectAtIndex:i] == [array2 objectAtIndex:j]) {
// do yo thangs
}
您可以使用快速列舉通過陣列2,然後用containsObject:
來檢查它是否屬於陣列1:
for (id object in array2)
{
if ([array1 containsObject:object])
{
// change your settings here
}
你也可以創建一個使用filteredArrayUsingPredicate:
一個新的陣列,或獲取指數匹配對象的路徑使用indexesOfObjectsPassingTest:
。你還沒有說過陣列中可能有多少物體,所以我不知道性能是否會成爲問題。
很好的解決方案。看到所有可能的方法如何在性能方面進行疊加,會有點兒有趣。 – jrturton
看看例如。在這裏:[什麼時候使用NSSet而不是NSArray更好](http://stackoverflow.com/questions/10997404/when-is-it-better-to-use-a-nsset-rather-than-a -nsarray) – Pfitz