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 に答える