UIImage不下载URL,即使它识别出应下载的正确数量

时间:2013-11-16 00:05:21

标签: ios uitableview nsstring nsarray

我有一个奇怪的字符串/数组问题。当我计算数组中的对象数(使用[字符串描述]获取的值时,它返回两个,正确数量的对象。当我尝试下载图像时,UIImage不会显示任何内容。

这是URL的日志,来自数组photoArg(如果你尝试去它们会说它们无效,因为我改了几行)

    (
    "\n\"https://scontent-a.xx.fbcdn.net/hphotos-ash2/s720x720/196148_2542310658202194_959795763_n.jpg\"",
    "\n\"https://fbcdn-sphotos-c-a.akamaihd.net/hphotos-ak-ash3/s720x720/576808_2239914766108450_770925407_n.jpg\"\n"
     )    

这是我的numberOfItemsInSection:

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
    return [self.photoArg count];
}

我的cellForItemAtIndexPath:

- (TBCollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"CollectionViewCell";

    TBCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];

    NSString *ImageURL = [self.photoArg objectAtIndex:indexPath.item];

    NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:ImageURL]];

    [cell.imageView setImage:[UIImage imageWithData:imageData]];

    return cell;
}

我的TBCollectionViewCell只是一个标准的UICollectionViewCell,除了里面有UIImageView。

我认为URL不会在cellForItemAtIndexPath:方法中下载的原因是它们没有正确格式化。如果是这样的话,我应该如何正确格式化数组数据呢?

1 个答案:

答案 0 :(得分:0)

那是因为你的字符串不是有效的URL。您需要删除\n\"\",以便dataWithContentsOfURL:接收有效数据。

"\n\"https://scontent-a.xx.fbcdn.net/hphotos-ash2/s720x720/196148_2542310658202194_959795763_n.jpg\"",

这不是很漂亮,但这应该只为你找到。

NSString *string = @"\n\"https://scontent-a.xx.fbcdn.net/hphotos-ash2/s720x720/196148_2542310658202194_959795763_n.jpg\"";
NSString *noNewLines = [string stringByReplacingOccurrencesOfString:@"\n" withString:@""];
NSString *noEscapes = [noNewLines stringByReplacingOccurrencesOfString:@"\"" withString:@""];

NSURL *validURL = [NSURL URLWithString:noEscapes];