iPad - dataWithContentsOfURL在我加载包含数据的URL时抛出NSRangeException

时间:2010-10-30 00:11:21

标签: iphone objective-c ipad

我的公司领主希望我为即将推出的iPad应用程序显示图片广告。我目前正在尝试使用以下代码显示图像:

- (UIImage *)getAdImage:(NSString *)adName {

NSString *adID = [self getPrivateConfigSettings:adName];
NSString *adUrl =
     [NSString stringWithFormat:[self getPrivateConfigSettings:@"eplanningURL"],
     [self getPrivateConfigSettings:@"eplanningSite"], adID];

NSData *theData =
     [NSData dataWithContentsOfURL:[NSURL URLWithString:adUrl]];

return [UIImage imageWithData: theData];
}

目前,它抛出了以下异常:

Terminating app due to uncaught exception 'NSRangeException', reason:
'*** -[NSCFArray objectAtIndex:]: index (-1( or possibly larger))
beyond bounds (0)'

在我创建“theData”的行中。

但是,当我检查我正在加载的网址(http://ads.us.e-planning.net/eb/3/9770/19e905cdc35ec591?o=i)时,它上面有数据。

PD:我知道代码漏了!现在我只想找到我的错误的原因;)

2 个答案:

答案 0 :(得分:2)

尝试手动设置您的网址,如下所示:

- (UIImage *)getAdImage:(NSString *)adName {

NSString *adUrl = @"http://ads.us.e-planning.net/eb/3/9770/19e905cdc35ec591?o=i";

NSData *theData =
     [NSData dataWithContentsOfURL:[NSURL URLWithString:adUrl]];

return [UIImage imageWithData: theData];
}

如果工作正常,则问题在于从getPrivateConfigSettings中检索正确的URL。

答案 1 :(得分:0)

发现它!它与URL无关。正如notme在评论中指出的那样,错误显然与NSData无关,而与NSArray无关。

事实证明,我在一个单独的线程中有这个(因此我可以在下载信息时更新UI)并且问题出在另一个线程中。奇怪的是,当我加载'theData'对象时它总是崩溃。到目前为止,我不知道为什么另一个线程会在那个特定的时刻崩溃,但由于我的时间紧迫而我的问题已经解决了,我只是想放弃这个。也许稍后我会重新审视并提供正确的解释。