iphone-阻止未按预期工作

iphone-阻止未按预期工作,iphone,objective-c-blocks,Iphone,Objective C Blocks,我有一个代码,为了学习,我正试图以块的形式编写它 我有一个NSMutableArray,它是NSDictionary对象的集合。在每个字典中都有一个与键“time”关联的NSString对象。我想知道那本词典上是否有给定的时间。如果我没有使用块,我会这样做: for( NSDictionary* obj in allTimes ) { double aValue = [[obj objectForKey:@"time"] doubleValue]; if (time == tim

我有一个代码,为了学习,我正试图以块的形式编写它

我有一个NSMutableArray,它是NSDictionary对象的集合。在每个字典中都有一个与键“time”关联的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”]都是空字符串。

这段代码对我有效,对你无效?我在重现你的问题时做错了什么吗

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);
    }];

问题可能是您正在尝试使用%@打印双精度,是否尝试调试?记录obj。也许出于某种原因,它是零。每一段的第一个obj?什么?它没有,也不应该。什么是通道?timeX在区块中正确加载了吗?或者,默认情况下,*stop为是,需要设置为NO@DigitalRobot:如果obj是一本字典,那么记录它也会显示它的内容,这样你就可以看到在检索它时是否有什么东西弄乱了。有时,会发生奇怪的事情