2011年5月21日土曜日

アルバムに保存されている写真データを取得する 1

ALAssetsLibrary から ALAssetsGroup を取得する

メソッド:*1
Enumerating Assets
- enumerateGroupsWithTypes:usingBlock:failureBlock:

→ Aseets group を Type of Asset から指定する。
→ usingBlock: パラメータに assets group を取得する処理を block で記述する。
→ failureBlock: データのアクセスに失敗したときの処理を blocks で記述する。
-----------------------

サンプルソース*2
NSUInteger groupTypes = ALAssetsGroupAlbum | ALAssetsGroupEvent | ALAssetsGroupFaces;
[assetsLibrary enumerateGroupsWithTypes:groupTypes usingBlock:listGroupBlock failureBlock:failureBlock];
サンプルでは group type の絞り込みを行っているが、現時点(2011.05)時点では「ALAssetsGroupAll」を指定しないと取得ができない。

usingBlock:listGroupBlock の実装は次のとおり。
ALAssetsLibraryGroupsEnumerationResultsBlock listGroupBlock = ^(ALAssetsGroup *group, BOOL *stop) {
        
    if (group) {
        // group を配列に格納する
        [groups addObject:group];
    } else {
        // group を 数え終わったあとの処理を行う ex) データの表示
        [self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
    }
};


参照:
*1
ALAssetsLibrary Class Reference
*2
wwwdc2010 Session421/iOS/MyImagePicker/