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:がarray1に属しているかどうかを確認するために使用できます。

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 に答える