我是新的ios开发人员,我想比较和更改属性
Array1 =(object1,object2,object3,object4) Array2 =(object2,object4,object5,object8)
比较Array1和Array2 如果Array2中有相同的对象,请更改对象中的属性。
在上面这种情况下,应该更改Object2和Object4 ..
我该怎么办?
请帮助我!!
答案 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
}