2011-01-08 4 views
0

Ich habe einen Code, den ich versuche, als Block zu schreiben, um zu lernen.iphone - Block funktioniert nicht wie erwartet

Ich habe dieses NSMutableArray, das eine Sammlung von NSDictionary-Objekten ist. In jedem Wörterbuch befindet sich ein NSString-Objekt, das dem Schlüssel "time" zugeordnet ist. Ich versuche herauszufinden, ob eine bestimmte Zeit in diesem Wörterbuch vorhanden ist. Wenn ich nicht Blöcke mit würde ich dies tun:

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

mit Blöcken ...

__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; 
} 

}]; 

aber dies ist nie etwas zu gründen. Alle "aValue" kommen als Null und alle [obj objectForKey: @ "time"] kommen als leere Strings.

+0

Das Problem kann sein, dass Sie versuchen, doppelt mit% @ zu drucken, haben Sie versucht, es zu debuggen? – vodkhang

+2

Log den obj. Vielleicht ist es aus irgendeinem Grund nichts. – ughoavgfhw

+0

@vodkhang, nein Ich drucke den String-Wert, nicht den doppelten aValue. – SpaceDog

Antwort

1

Dieser Code funktioniert für mich, was funktioniert nicht für Sie? Habe ich etwas falsch gemacht, als ich Ihr Problem neu erstellte?

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

Ich weiß es nicht, aber nach erneutem Abtippen funktioniert es. Vielen Dank!!! – SpaceDog

+0

manchmal passieren seltsame thigns passieren – vodkhang

Verwandte Themen