2

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

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

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

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

我应该怎么做??

请帮我!!

4

3 回答 3

3

您可以为此使用集合

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

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

于 2012-07-01T07:51:17.390 回答
1

您可以使用快速枚举通过数组2,然后使用containsObject:检查它是否属于数组1:

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

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

于 2012-07-01T06:52:51.577 回答
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
        }
于 2012-07-01T05:43:40.443 回答