0

例として、この配列がある場合:

_mode = [NSArray arrayWithObjects:
                      [NSArray arrayWithObjects:@"1", @"One", nil],
                      [NSArray arrayWithObjects:@"2", @"Two", nil],
                      [NSArray arrayWithObjects:@"3", @"Three", nil],
                      [NSArray arrayWithObjects:@"4", @"Four", nil],
                      [NSArray arrayWithObjects:@"5", @"Five", nil],
                      nil];

そして、array_modeのどのオブジェクトに含まれているの@"3"かを見つける必要があります。私は試しselectedIndex = [_mode indexOfObject:@"3"];ましselectedIndex = [[_mode objectAtIndex:0] indexOfObject:@"sta"];たが、どちらも機能しません。

4

4 に答える 4

9
[_mode indexOfObjectPassingTest:^(id obj, NSUInteger idx, BOOL *stop){
    return [[obj objectAtIndex:0] isEqualToString:@"3"];
}];
于 2012-04-08T17:46:04.037 に答える
3

これは基本的にJonasSchnelliの答えと同じです:)

for (NSArray *subarray in _mode){
    NSInteger index = [subarray indexOfObject:@"3"];
    if (index != NSNotFound) return subarray;
}
于 2012-04-08T17:50:37.120 に答える
2

このような?

for(NSArray *subarray in _mode) {
  for(NSString *str in subarray) {
   if([str isEqualToString:@"3"]) {
     return subarray; // returns the array within _mode that contains "3"
   }
  }
}

インデックスが必要な場合:

for(NSArray *subarray in _mode) {
  for(NSString *str in subarray) {
   if([str isEqualToString:@"3"]) {
     return [mode indexOfObject:subarray];
   }
  }
}
于 2012-04-08T17:38:35.950 に答える
2

これにより、配列内にある辞書のインデックスが得られます。

for (NSDictionary *dict in self.yourArray ) {
    if ([anotherArray containsObject:[dict valueForKey:@"Key"]]) {
        NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[self.yourArray indexOfObject:dict] inSection:section];
        NSLog(@"IndexPath is %@",indexPath);
    }    
}
于 2014-11-22T11:01:27.530 に答える