0

私は現在、多くの 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

考えられる方法の 1 つを次に示します。

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