我有一个奇怪的字符串/数组问题。当我计算数组中的对象数(使用[字符串描述]获取的值时,它返回两个,正确数量的对象。当我尝试下载图像时,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:方法中下载的原因是它们没有正确格式化。如果是这样的话,我应该如何正确格式化数组数据呢?
答案 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];