2012-08-02 55 views
1

我期待在崩潰日誌中是在測試應用程序的設備,在插入的對象,我看到下面的行...的iOS NSArray的索引

objc_exception_throw + 33

[__NSArrayM insertObject:atIndex :] +187

發生這種情況的代碼如下所示。 appData是一個NSDictionary,我期待imageUrl成爲一個到互聯網上的PNG文件的URL。

for (int i = 1; i <= [self getNumberOfScreenshots]; i++) { 
    pathToUrl = @"screenshot_"; 
    pathToUrl = [pathToUrl stringByAppendingString:[[NSNumber numberWithInt:i] stringValue]]; 
    imageUrl = [self.appData valueForKey:pathToUrl]; 
    imageData = [[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:imageUrl]]; 
    [NSMutableArrayObj addObject:imageData]; 
} 

什麼會導致這種類型的錯誤?該錯誤發生很少..可能是imageData有時爲零,因爲它無法從url下載png圖像,所以當我嘗試將它添加到NSMutableArrayObj時引發異常?

謝謝!

+0

是的,在容器中不允許有'nil';如果價值可能是'零',這將是一個問題。你不會說哪個例外被提出,但是;跟蹤意味着拋出異常。它可能更準確地描述錯誤。 – 2012-08-02 08:07:08

+0

是的,添加更多的錯誤檢查和拒絕圖像'imageData == nil'。 – trojanfoe 2012-08-02 08:10:15

+0

感謝您的幫助!我會添加錯誤檢查,我猜這是零問題。我無法確切地看到從跟蹤的其餘部分拋出什麼異常...最上面的一行是__exceptionPreprocess + 163 – user1467188 2012-08-02 08:13:04

回答

0

可能有兩方面的原因,你還沒有描述錯誤的更多specically

1)其實你的內存不是分配給數組

2)零值插入到數組。要停止插入nil,請執行以下操作:

if(imageData) 
{ 
    [NSMutableArrayObj addObject:imageData]; 
}