在NSMutableArray中查找NSMutableDictionary的索引

时间:2016-10-12 15:50:49

标签: ios objective-c nsmutablearray nsmutabledictionary

我有一个NSMutableDictionary,其中包含特定的keyvalue。这个字典在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];

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

2 个答案:

答案 0 :(得分:1)

答案曾经是一个带有计数器的for循环,但你很幸运:NSArray有一个新方法,indexOfObject:,应该可以正常使用这个技巧:

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

斯威夫特:index(of:)

答案 1 :(得分:0)

如果您的数组只包含一个特殊NSMutableDictionary,请使用下面的代码。我没有测试它,但想法是在数组中搜索NSMutableDictionary类。而且你必须在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

我希望这就是你要找的东西。