0

我正在创建一个应用程序来吸引我朋友的 youtube 提要。当我运行应用程序时,我收到一个错误:

2013-03-30 16:34:04.973 eastcoastdyes[15395:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSURL initWithString:relativeToURL:]: nil string parameter'
*** First throw call stack:
(0x1a38012 0x1354e7e 0x1a37deb 0xd4a49d 0xdc11e4 0x3859 0x3538fb 0x3539cf 0x33c1bb 0x34cb4b 0x2e92dd 0x13686b0 0x3014fc0 0x300933c 0x3009150 0x2f870bc 0x2f88227 0x2f888e2 0x1a00afe 0x1a00a3d 0x19de7c2 0x19ddf44 0x19dde1b 0x19927e3 0x1992668 0x298ffc 0x231d 0x2245 0x1)
libc++abi.dylib: terminate called throwing an exception
(lldb)

这是我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *cellID = @"Cell Identifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellID];
    }

    NSDictionary *video = [self.videos objectAtIndex:indexPath.row];
    cell.textLabel.text = [video objectForKey:@"title"];
    cell.detailTextLabel.text = [video objectForKey:@"uploader"];

    NSURL *url = [[NSURL alloc] initWithString:[video objectForKey:@"data.items.thumbnail.hqdefault"]];
    [cell.imageView setImageWithURL:url placeholderImage:[UIImage imageNamed:@"placeholder"]];

    return cell;

}

我在 NSURL *url 收到它。请帮助

4

1 回答 1

1

您收到错误是因为您的字典为该键返回了一个 nil 对象...因此您应该首先确保您的video字典为您的键返回一个非零对象(字符串),@"data.items.thumbnail.hqdefault"然后才初始化您的 URL...

例如

NSString *imageURLString = [video valueForKeyPath:@"data.items.thumbnail.hqdefault"]; 
if (imageURLString) {
    NSURL *url = [[NSURL alloc] initWithString:imageURLString];
    [cell.imageView setImageWithURL:url placeholderImage:[UIImage imageNamed:@"placeholder"]];
} else {
// set imageView to something else
}
于 2013-03-30T20:57:44.163 回答