如何比较数组?并改变属性?

时间:2012-07-01 05:38:27

标签: ios xcode arrays sorting compare

我是新的ios开发人员,我想比较和更改属性

Array1 =(object1,object2,object3,object4) Array2 =(object2,object4,object5,object8)

比较Array1和Array2 如果Array2中有相同的对象,请更改对象中的属性。

在上面这种情况下,应该更改Object2和Object4 ..

我该怎么办?

请帮助我!!

3 个答案:

答案 0 :(得分:3)

您可以使用此

的集合
NSMutableSet *array1Set = [NSMutableSet setWithArray:array1];
NSSet *array2Set = [NSSet setWithArray:array2];
[array1Set intersectSet:array2Set];

现在你有一个只包含两个数组中的对象的集合。 现在,您可以在集合上使用enumerateObjectsUsingBlock:来操纵对象或将集合转换回数组NSArray *filteredArray = [array1Set allObjects]

答案 1 :(得分:1)

您可以使用快速枚举来传递数组2,然后使用containsObject:检查它是否属于array1:

for (id object in array2)
{
    if ([array1 containsObject:object])
    {
        // change your settings here
    }

您还可以使用filteredArrayUsingPredicate:创建新数组,或使用indexesOfObjectsPassingTest:获取匹配对象的索引路径。你还没有说过阵列中可能有多少个对象,所以我不知道性能是否会成为一个问题。

答案 2 :(得分:0)

我认为在这种情况下你必须进行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
        }