0

私は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;

}
4

1 に答える 1

0

テーブル ビューには 6 行が必要です。しかし、データ ソース配列には 5 つのアイテムしか含まれていません。- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableViewテーブルビューのデリゲートメソッドを確認してください。

于 2012-10-19T08:25:16.030 に答える