2012-03-27 6 views
0

私はそのようなコードアレイ - setImageWithURL

arrayWithImages = [[NSMutableArray alloc] init]; 

NSEnumerator *enumForNames = [arrayWithNames objectEnumerator]; 
NSEnumerator *enumForURLs = [arrayWithURLs objectEnumerator]; 

id objName, objURL; 

while(objName = [enumForNames nextObject]) { 
    objURL = [enumForURLs nextObject]; 

    UIImageView *anImage = nil; 
    [anImage setImageWithURL:[NSURL URLWithString:objURL]]; 

    (...) 

    [arrayWithImages addObject:anImage]; 

} 

そして、私はラインでSIGABRTを持ってたびに "[arrayWithImagesのaddObject:アニメージュ];" 何が間違っていますか?

+0

ログを確認してスタックトレースを公開してください –

+0

イメージが正しく設定されているかどうかを確認しましたか?それを配列に追加しようとすると 'nil'のままであれば、クラッシュします。 – rosslebeau

+0

キャッチされていない例外 'NSInvalidArgumentException'のためアプリを終了しています、理由: '*** - [__ NSArrayM insertObject:atIndex:]:オブジェクトはゼロにできません' –

答えて

0

にはsetImageWithURLメソッドがありません。これはどこから来たのですか?

SIGABRTクラッシュの出力はありますか?あなたがループをぶら下げ避けるために、非同期的に画像をダウンロードしてください

// Download the image 
NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:objURL]]; 
// Make an UIImage out of it 
UIImage *anImage = [UIImage imageWithData:imageData]; 
// Create an image view with the image 
UIImageView *imageView = [[UIImageView alloc] initWithImage:anImage]; 

// Check to make sure it exists 
if (imageView != nil) { 
    // Add it to your array 
    [arrayWithImages addObject:imageView]; 
else { 
    NSLog(@"Image view is nil"); 
} 

注:

は、このコードを試してみてください。 This blog postは、非同期画像のダウンロードについて議論している。

また、[enumForURLs nextObject];がNSString(またはそれ以上のNSURL)を返すことがわかっている場合は、objURLにNSString(またはNSURL)を割り当てる必要があります。

+0

setImageWithURLは、SDWebImageクラスのメソッドです。私はそれが正しくインポートされたと思う。 –

+0

さて、置き換えに関連するコードは無視してください。 – JoePasq

+0

それでは、setImageWithURLを使って修正するにはどうしたらいいですか? –