2012-09-23 7 views
5
[AsyncRequest performGetRequestWithUrl:[NSString stringWithFormat:@"http://%@/api/streams/%d", @"server.herokuapp.com", userId] 
        completionHandler:^(NSDictionary *result, NSError *error) { 
    // Create new SBJSON parser object 
    NSError *e; 
    NSArray *jsonArray =[NSJSONSerialization JSONObjectWithData:result options:NSJSONReadingMutableContainers error: &e]; 

    NSLog(@"parse result to JSON object with jsonArray: %@ and error: %@", jsonArray, e.description); 

    if ([jsonArray valueForKey:@"error"]) { 
     return nil; 
    } 

    NSLog(@"getStreams size of the return array: %d", [jsonArray count]); 
    NSMutableArray* data = [[NSMutableArray alloc] initWithCapacity:0]; 

    if (jsonArray) { 
     data = [[NSMutableArray alloc] initWithCapacity:[jsonArray count]]; 
     for (NSDictionary *item in jsonArray) { 
      NSLog(@"item: %@", item); 
      [data addObject:[[Stream alloc] initWithJSONObject:item]]; 
     } 
    } 

    onComplete(data, error); 

}]; 

Otrzymuję dziwny błąd w tym kodzie. Pokazuje komunikat o błędzie "Uzyskiwanie niekompatybilnych typów wskaźników blokujących wysyłanie void * (^) (NSDictionary * _strong, NSError * _strong) do parametru typu 'void (^) (NSDictionary * _strong, NSError * _strong)'Uzyskiwanie niezgodnych typów wskaźników blokujących wysyłanie pustego * (^)

Tutaj jest podpis funkcja:

+(void)performGetRequestWithUrl:(NSString *)requestUrl completionHandler:(void (^)(NSDictionary *result, NSError *error))completionBlock 

Odpowiedz

24

zmiana „zerową” do „powrót”

+0

Dzięki Szkoda, komunikat o błędzie w Xcode jest mylące – flashsnake

+5

@flashsnake komunikat o błędzie mówiąc, że jesteś przechodzą.. blok, który zwraca 'void *' do parametru, który oczekuje, że blok zwróci 'void' .W C i Objective-C' void * 'jest typem dla dowolnego wskaźnika;' nil' jest w rzeczywistości zdefiniowany jako 'void * (0)', więc gdy wpiszesz 'return nil', kompilator wybierze twój typ zwracania jako' void * '. Natomiast jeśli nie masz nic po swojej instrukcji 'return' lub nie ma' return', to ona zwraca typ 'void', zgodnie z oczekiwaniami parametru. –

Powiązane problemy