2012-11-13 82 views
0

我使用ASIHTTPRequest下載圖像。我寫這個代碼:使用NSNotificationCenter的ASIHTTPRequest問題

+(void)GetImagesURL 
{ 
    NSLog(@"%i",[TripsArray count]); 
    for (int i=0;i< [TripsArray count]; i++) 
    { 

     NSURL *DetailTripURL = [NSURL URLWithString:[[TripsArray objectAtIndex:i] TripURL]]; 
     __block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:DetailTripURL]; 
     [request setCompletionBlock:^{ 
      NSData *TripHTMLData = [request responseData]; 
      NSLog(@"url : %@",DetailTripURL); 
      [[TripsArray objectAtIndex:i] setTripData:TripHTMLData]; 
      //NSLog(@"%@",DetailTripHTMLData); 
      // 2 
      TFHpple *DetailTripParser = [TFHpple hppleWithHTMLData:TripHTMLData]; 

      // Get Image 
      NSString *ImageTripXpathQueryString = @"//div[@class='image_container']/img"; 
      NSArray *ImageTripNodes = [DetailTripParser searchWithXPathQuery:ImageTripXpathQueryString]; 
      NSLog(@"%i",[ImageTripNodes count]); 
      for (int j=0 ;j<[ImageTripNodes count]; j++) 
      { 
       [[TripsArray objectAtIndex:i] setImageUrl:[[ImageTripNodes objectAtIndex:j] objectForKey:@"src"]]; 
       NSLog(@"%@",[[ImageTripNodes objectAtIndex:j] objectForKey:@"src"]); 
      } 


     }]; 
     [request setFailedBlock:^{ 
      NSError *error = [request error]; 
      NSLog(@"Get Image URL Failed %@", error.localizedDescription); 
     }]; 

     [request startAsynchronous];   
    } 
     [[NSNotificationCenter defaultCenter] postNotificationName:@"Get Images URL Success" object:self]; 
} 

我想要postNotificationName調用另一個函數。問題是NSNotificationCenter,而不是postNotificationName。 任何幫助請嗎?

+1

請寫的東西在哪裏,你認爲你的錯誤就在於,你的代碼應該做和任何其他相關的信息 –

+0

我有Trips數組與圖像URL我想通過解析HTML頁面獲取圖像URL使用TFHpple在異步方式,我想如果我得到所有圖像下載PostNotificationCenter – Tefa

+0

是否有一個對象已添加爲自己作爲NSNotificationCenter觀察者的名字爲「Get Images URL Success」的通知? –

回答

0

首先,你需要添加一個觀察者Get_Images_URL_Success

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(gotMessages:) name:Get_Images_URL_Success object:nil]; 

當您在+GetImagesURL方法postNotificationName,將其稱爲

- (void)gotMessages:(id)sender { 
    NSLog(@"This will be called after the postNotificationName"); 
} 

建議您removeObserver不需要的時候(例如,在dealloc

[[NSNotificationCenter defaultCenter] removeObserver:self name:Get_Images_URL_Success object:nil]; 

現在,當你postNotificationName這樣,gotMessages方法應該叫

[[NSNotificationCenter defaultCenter] postNotificationName:Get_Images_URL_Success object:self]; 

[超級容易,不是嗎?]

+0

這個我做了什麼Warif但沒有調用GotMessage? – Tefa

+0

您正在發佈通知Get_Images_URL_Success。並且每次使用Get_Images_URL_Success發佈通知時,gotMessages都會觸發。 –

+0

我可以使用參數Int調用GotMessages嗎? – Tefa