在 NSMutableArray 中查找 NSMutableDictionary 的索引

Finding index of NSMutableDictionary inside an NSMutableArray

我有一个带有特定 keyvalue 的 NSMutableDictionary。这个字典在 NSMutableArray 中。我想用数组内某个索引处的特定键更新字典。我想找到这个字典对象的索引。目前,我的字典索引为 0,而我的 editingIndexPath 为 1,属于 NSIndexPath 类型,因此 editingIndexPath.row 对我没有帮助。

我的代码如下:

    //UpdatedDateAndTime is the NSMutableArray.
    //selectedDay is a NSString object.
    //dateKeySelected is also a string key.

    [[updatedDateAndTime objectAtIndex:editingIndexPath.row] setObject:selectedDay forKey:dateKeySelected];

我的问题是我想获得找到的字典的正确索引。

如果你的数组只包含一个特殊的 NSMutableDictionary 然后使用下面的代码。我没有测试它,但我的想法是在数组中搜索 NSMutableDictionary class。您必须在 indexPath 中执行此搜索,该搜索等于您要分配一些数据的单元格。

@interface ViewController (){
    NSMutableArray *array;
    NSMutableDictionary *dictionary;
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

}

- (UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    if (indexPath.row == 1) {
        for (int i = 0; i < array.count; i++) {
            if ([updatedDateAndTime[i] objectForKey:@"open_house_updated_date"] == selectedDay) {
            NSLog(@"%i th index contains NSMutableDictionary that you want",i);
            //do whatever needed
            break;
        }
        }
    }
    else{
        //define other cells which doesn't contain NSMutableDictionary
    }
    return cell;
}

@end

希望这就是您要找的。

答案曾经是一个带有计数器的 for 循环,但你很幸运:NSArray 有一个新方法,indexOfObject:,它应该可以很好地解决这个问题:

NSUInteger i = [myArray indexOfObject:@{myKey:myValue}];

Swift: index(of:)