这个2x快速枚举的更好解决方案?

run*_*mad 1 objective-c nsarray fast-enumeration

我循环遍历一个数组,并将此数组中的objects标记属性与另一个数组中的对象进行比较.

这是我的代码:

NSArray *objectsArray = ...;
NSArray *anotherObjectArray = ...;
NSMutableArray *mutableArray = ...;

for (ObjectA *objectA in objectsArray) {
    for (ObjectZ *objectZ in anotherObjectArray) {
        if ([objectA.tag isEqualToString:objectZ.tag]) {
            [mutableArray addObject:objectA];
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

请注意,该tag属性不是整数,因此必须比较字符串.

Sea*_*ell 5

您可以通过遍历每个数组一次而不是嵌套来执行此操作:

NSMutableSet *tagSet = [NSMutableSet setWithCapacity:[anotherObjectArray count]];

for(ObjectZ *objectZ in antherObjectArray) {
    [tagSet addObject:objectZ.tag];
}

NSMutableArray *output = [NSMutableArray mutableArray];

for(ObjectA *objectA in objectsArray) {
    if([tagSet containsObject:objectA.tag]) {
        [output addObject:objectA];
    }
}
Run Code Online (Sandbox Code Playgroud)