0

我從網絡服務中我的cellForRowAtIndexPath使用下面的代碼獲取圖像在指定索引添加到的UIImage的NSMutableArray:通過AFNetworking

[cell.posterImageView setImageWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[postersURLArray objectAtIndex:indexPath.row]]] placeholderImage:[UIImage imageNamed:@"placeholder.png"] 
    success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) 
    { 
     if (request) 
     { 
      [UIView transitionWithView:cell.posterImageView 
           duration:1.0f 
           options:UIViewAnimationOptionTransitionCurlUp 
          animations:^{[cell.posterImageView setImage:image];} 
          completion:nil]; 

      posterImageView.tag = indexPath.row; 
      posterImageView.image = image; 
      [myImage insertObject:posterImageView atIndex:posterImageView.tag]; 
     } 

     else 
     { 
      NSLog(@"Cached"); 
     } 
    } 
    failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) 
    { 
     NSLog(@"Failed to fetch poster."); 
    }]; 

但它總是產生一個錯誤。我已經分配了myImage可變數組。任何幫助,將不勝感激。謝謝。

+2

什麼是錯誤? – Jeremy 2013-02-27 04:18:49

回答

0

您傳遞給insertObject:atIndex:index必須小於或等於已添加到陣列的當前數量的對象。你不能像你在做的那樣在數組中隨機的地方插入對象。

當您分配可變數組時,即使設置了容量,該數組也是空的。從空數組開始,唯一的選項是調用addObject:或調用insertObject:atIndex:,索引爲0.除0以外的任何值(假定數組爲空)都會導致異常。

如果您需要在隨機位置插入對象,則必須先用設定數量的虛擬對象(例如NSNull實例)填充陣列。這要求您知道最大數組大小是多少。

NSUInteger maxSize = ... // some known maximum number of images 
NSMutableArray *myImage = [NSMutableArray arrayWithCapacity:maxSize]; 
for (NSUInteger i = 0; i < maxSize; i++) { 
    [myImage addObject:[NSNull null]]; 
} 

現在你可以只要指數小於maxSize在隨機位置插入圖像。但是現在您必須使用replaceObjectAtIndex:withObject:而不是insertObject:atIndex:

+0

非常感謝!這是一個很大的幫助! – jaytrixz 2013-02-27 05:24:28