1

问题

我想订购从我ALAssetsLibrary的方式返回的结果,Camera Roll它将位于我的数组之上。

代码

这是我的枚举块,它遍历所有返回的项目。

ALAssetsLibraryGroupsEnumerationResultsBlock listGroupBlock = ^(ALAssetsGroup *group, BOOL *stop) {
    if(group) {
        [_groups addObject:group];
        [self.tableView reloadData];
    }
};
4

2 回答 2

5

如果您真的只关心相机胶卷是第一位的,您可以在开头插入相机胶卷并附加所有其他组的位置构建数组,如下所示:

groups = [NSMutableArray new];
ALAssetsLibraryGroupsEnumerationResultsBlock listGroupBlock = ^(ALAssetsGroup *group, BOOL *stop) {
    if (group) {
        if ([group valueForProperty:ALAssetsGroupType]== ALAssetsGroupSavedPhotos]) {
            [groups insertObject:group atIndex:0];
        }
        else {
            [groups addObject:group];
        }
    }
    else {
        // group is nil, so there are no more groups to enumerate
        [self.tableView reloadData];
    }
};

这样您就不必编写任何额外的排序代码,一切都会在正确的位置。正如 Robert 所指出的,没有理由在每次迭代时都重新加载。

于 2013-01-25T02:25:06.260 回答
0

在你的街区,这样做......

if ( group ) {
  [_groups addObject:group];
} else {
  // Sort your groups in _groups here
  [self.tableView reloadData];
}

...根据文档,迭代在groupis时结束nil。通过这种方式,您可以获取所有组,对它们进行排序,然后重新加载表视图。在您收到每个组之后重新加载它是没有意义的 - 在这种情况下这是一个快速的过程。

于 2013-01-24T16:33:59.900 回答