0

我目前有一个 NSArray,其中包含许多 NSArray,每个 NSArray 都包含一对 NSString,如下所示:[["A", "B"], ["U", "A"], ["X", "Y"], ...],我有兴趣首先检查它是否包含特定对象,然后抓取另一个配对对象并将其放入数组中. 例如,如果我"A"在上面的数组中检查,结果数组将包含["B", "U"]

我知道如何遍历每个数组,但是在决定如何获取数组中的配对对象时遇到了麻烦……谢谢!

for (NSArray *innerArray in outerArray){
    if ([innerArray containsObject: @"A"]){
       //how to extract the other object and save it to an array?
    }
}
4

3 回答 3

3
NSMutableArray *results = [NSMutableArray array];
for (NSArray *innerArray in outerArray){
    // Get the index of the object we're looking for
    NSUInteger index = [innerArray indexOfObject:@"A"];
    if (index != NSNotFound) {
        // Get the other index
        NSUInteger otherIndex = index == 0 ? 1 : 0;

        // Get the other object and add it to the array
        NSString *otherString = [innerArray objectAtIndex:otherIndex];
        [results addObject:otherString];
    }
}

应该做的伎俩。

于 2013-08-23T15:56:14.593 回答
2

如果您确定您的数据将具有您所描述的结构,您可以使用内部数组恰好有 2 个元素的事实 - 因此“其他”元素的索引将为 1-indexOfYourElement:

for (NSArray *innerArray in outerArray){
    NSUInteger ix = [innerArray indexOfObject:@"A"];
    if (ix!=NSNotFound){
       id objectToAdd = innerArray[1-ix];
       // Do something with it
    }
}
于 2013-08-23T15:56:52.973 回答
0

这是一种可能的方法:

NSMutableArray* results = [[NSMutableArray alloc] init];
for (NSArray *innerArray in outerArray){
    if ([innerArray containsObject: @"A"]){
        [results addObjectsFromArray: [innerArray enumerateObjectsUsingBlock:^(NSString* obj, NSUInteger idx, BOOL *stop) {
            if (![obj isEqual: @"A"])
            {
                [results addObject: obj];
            }
        }]];
    }
}
于 2013-08-23T15:55:14.747 回答