返回iOS部分中的项目数

时间:2014-10-02 21:41:22

标签: ios objective-c parse-platform

这里非常直截了当的问题;我正在使用UICollectionView并希望每个部分显示一定数量的图像,这些图像由与该部分匹配的图像数确定。

例如:

Category: x # Images in Category: y # Images In Section: y

我已将所有内容排序到类别中,我可以获取每个类别的计数,但我不确定如何为“类别”部分中的每个图像返回正确的值。这是我到目前为止所得到的:

- (NSInteger) collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
// Category Delineater Here

for (int i = 0; i <= _categoryCount.count; i++)
{
    PFQuery *tiredQuery = [[PFQuery alloc] initWithClassName:@"savedImages"];
    [tiredQuery whereKey:@"imageCategory" equalTo:[_categoryCount objectAtIndex:0]];
    [tiredQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error)
    {
        if (!error)
        {
            NSLog(@"What does this return? %@", objects);
        }
        else
        {
            NSLog(@"This returns an error: %@", error);
        }
    }];
}

return _extractedImagesArray.count;
}

目前,_extractedImagesArray.count是下载的图片总数。如何根据特定类别的图像数量更改此部分中返回的金额?

编辑:澄清数据结构:

每张图片都附有一个类别。这些图像都放在Parse上的同一个Class中。

我的最终目标是让它看起来与此类似(在这种情况下代表图像的[x]):

第1类 X X X X X

第2类 X X X

第3类 X X X X

等等

2 个答案:

答案 0 :(得分:0)

这一行看起来像一个问题:

  

[tiredQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error)

您正在使用的方法是异步运行的,因此您不会立即获得结果。 -collectionView:numberOfItemsInSection:不会等待您异步查找对象然后计算它们 - 您需要立即返回对象数。

听起来你可能需要提前做一些处理以确定每个部分中的对象数量,然后记住某处的计数,以便在收集视图询问时可以提供它们。

答案 1 :(得分:0)

看起来你正在使用Parse。

重新加载数据时,不应该调用后端。尝试这样的事情:

- (void)getImages {
    for (int i = 0; i <= _categoryCount.count; i++) {
        PFQuery *tiredQuery = [[PFQuery alloc] initWithClassName:@"savedImages"];
        [tiredQuery whereKey:@"imageCategory" equalTo:[_categoryCount objectAtIndex:0]];
        [tiredQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
             if (!error) {
                 _extractedImagesArray = objects;
                 [collectionView reloadData];
             }
             else {
                 NSLog(@"This returns an error: %@ %@", error, [error userInfo]);
             }
         }];
    }
}

- (NSInteger) collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
    return _extractedImagesArray.count;
}

以下是返回不同数量项目的示例,该项目与您引用的部分无关。请记住,第0部分始终是第一部分。

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
    switch (section) {
        case 0:
            return xNumber;
            break;
        case 1:
            return yNumber;
            break;
        case 2:
            return zNumber;
    }
}