学習のために、ブロックとして書き込もうとしているコードがあります。
NSDictionaryオブジェクトのコレクションであるこのNSMutableArrayがあります。各ディクショナリ内には、キー「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"]は空の文字列になります。