0

为了学习,我有一个代码,我正在尝试将其编写为块。

我有这个 NSMutableArray 是 NSDictionary 对象的集合。在每个字典中都有一个与键“时间”相关联的 NSString 对象。我正在尝试查找该字典中是否存在给定时间。如果我不使用块,我会这样做:

for( NSDictionary* obj in allTimes ) {
    double aValue = [[obj objectForKey:@"time"] doubleValue];
    if (time == timeX)
        [self doStuff];
}

使用块...

__block BOOL found = NO;

[allTimes  enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

double aValue = [[obj objectForKey:@"time"] doubleValue];
NSLog(@"a value=%@", [obj objectForKey:@"time"] );

if (aValue == timeX) {
    *stop = YES;
    found = YES;
}

}];

但这永远不会建立任何东西。所有“aValue”都为零,所有 [obj objectForKey:@"time"] 都作为空字符串出现。

4

1 回答 1

1

这段代码对我有用,什么对你不起作用?重现您的问题时我做错了什么吗?

NSMutableArray *array = [NSMutableArray array];
    NSDictionary *dict1 = [NSDictionary dictionaryWithObject:@"hehe" forKey:@"time"];
    NSDictionary *dict2 = [NSDictionary dictionaryWithObject:@"hehe2" forKey:@"time"];                      

    [array addObject:dict1];
    [array addObject:dict2];

    [array  enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

        double aValue = [[obj objectForKey:@"time"] doubleValue];
        NSLog(@"a value=%@", [obj objectForKey:@"time"] );
        NSLog(@"aValue = %d", aValue);
    }];
于 2011-01-08T12:11:02.857 回答