簡體   English   中英

ios - 獲取相冊列表的簡單示例?

[英]ios - Simple example to get list of photo albums?

我正在嘗試使用此處的參考來獲取設備中可用的相冊列表:

到目前為止,我在viewDidLoad中有這個:

// Get albums
NSMutableArray *groups = [NSMutableArray new];
ALAssetsLibrary *library = [ALAssetsLibrary new];

ALAssetsLibraryGroupsEnumerationResultsBlock listGroupBlock = ^(ALAssetsGroup *group, BOOL *stop) {
    if (group) {
        [groups addObject:group];
    }
};
NSUInteger groupTypes = ALAssetsGroupAlbum;
[library enumerateGroupsWithTypes:groupTypes usingBlock:listGroupBlock failureBlock:nil];

NSLog(@"%@", groups);

但是,組數組中沒有添加任何內容。 我期待看到NSLog中的2個項目。

看起來響應來自異步響應listGroupBlock,但是你的NSLog在調用之后就出現了。 因此,組仍然是空的,並且不會在當前線程中填充。

如何在listGroupBlock中添加日志記錄?

ALAssetsLibraryGroupsEnumerationResultsBlock listGroupBlock = ^(ALAssetsGroup *group, BOOL *stop) {
    if (group) {
        [groups addObject:group];
    }
    NSLog(@"%@", groups);

    // Do any processing you would do here on groups
    [self processGroups:groups];

    // Since this is a background process, you will need to update the UI too for example
    [self.tableView reloadData];
};

對於IOS9以上,ALAsset庫已被棄用。 相反,照片框架已經引入了一種名為PHAsset的新資產類型。 您可以使用PHAssetCollection類檢索相冊。

PHFetchResult *userAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAny options:nil];
PHFetchResult *smartAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAny options:nil];

PHAssetCollectionType定義專輯的類型。 您可以迭代fetchResults以獲取每個專輯。

[userAlbums enumerateObjectsUsingBlock:^(PHAssetCollection *collection, NSUInteger idx, BOOL *stop) {}];

照片框架中的相冊由PHAssetCollection表示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM