0

cellForRowAtIndexPathで以下のコードを使用して、Webサービスから画像をフェッチしています。

[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可変配列を割り当てています。

4

1 に答える 1

0

index渡す先はinsertObject:atIndex:、配列にすでに追加されているオブジェクトの現在の数以下である必要があります。配列内のランダムな場所にオブジェクトを挿入することはできません。

容量が設定されていても、可変配列を割り当てると、配列は空になります。空の配列から開始する場合は、呼び出す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]];
}

これで、インデックスが。未満である限り、画像をランダムな場所に挿入できますmaxSizereplaceObjectAtIndex:withObject:ただし、の代わりにを使用する必要がありますinsertObject:atIndex:

于 2013-02-27T04:34:23.480 に答える