私はWebサービスを使用して、アプリケーションでデータを取得しています。あなたがここで見ることができるように、私は異なる壁紙画像を取り戻します。
"wallpapers": [
{
"url": "http://www.krcgenk.be/files/wallpaper/app/iphone4_fans.jpg"
},
{
"url": "http://www.krcgenk.be/files/wallpaper/app/iphone4_logo.jpg"
},
{
"url": "http://www.krcgenk.be/files/wallpaper/app/iphone4_simaeys.jpg"
},
{
"url": "http://www.krcgenk.be/files/wallpaper/app/iphone4_trainers.jpg"
},
{
"url": "http://www.krcgenk.be/files/wallpaper/app/iphone4_vossen.jpg"
}
]
ご覧のとおり、現時点では壁紙の数は奇数です。そのため、テーブルビューの1つのセルには、2つではなく1つの画像しか含まれていません。次のことを試みました。
id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:0];
NSInteger count = [sectionInfo numberOfObjects];
if (_loopIndex < count)
{
NSIndexPath *path = [NSIndexPath indexPathForRow:_loopIndex inSection:0];
_loopIndex++;
NSIndexPath *path2 = [NSIndexPath indexPathForRow:_loopIndex inSection:0];
Wallpaper *wallpaper1 = [self.fetchedResultsController objectAtIndexPath:path];
Wallpaper *wallpaper2 = [self.fetchedResultsController objectAtIndexPath:path2];
NSData* imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:wallpaper1.url]];
UIImage* image = [[UIImage alloc] initWithData:imageData];
NSData* imageData2 = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:wallpaper2.url]];
UIImage* image2 = [[UIImage alloc] initWithData:imageData2];
if(!(image == nil)){
cell.img1.image = image;
}else{
NSData* imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://www.krcgenk.be/files/wallpaper/app/iphone4_logo.jpg"]];
UIImage* image = [[UIImage alloc] initWithData:imageData];
cell.img1.image = image;
}
if(!(image2 == nil)){
cell.img2.image = image2;
}else{
NSData* imageData2 = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://www.krcgenk.be/files/wallpaper/app/iphone4_logo.jpg"]];
UIImage* image2 = [[UIImage alloc] initWithData:imageData2];
cell.img2.image = image2;
}
}
_loopIndex++;
if(_loopIndex >= count){
_loopIndex = count-1;
}
return cell;
imageViewの最初の4つの画像が正しく表示されますが、5番目の画像でクラッシュします。これはエラーです。
Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[_PFArray objectAtIndex:]: index (5) beyond bounds (5)
よろしくお願いいたします。
編集
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
NSInteger count = [sectionInfo numberOfObjects];
return count;
}