ALAssetsLibrary不返回对象

时间:2012-11-16 08:35:23

标签: objective-c

代码

if ( !_groups) {
    _groups = [[NSMutableArray alloc] init];
} else {
    [_groups removeAllObjects];
}

if (!_assetsLibrary) {
    _assetsLibrary = [[ALAssetsLibrary alloc] init];
}

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

ALAssetsLibraryAccessFailureBlock failureBlock = ^(NSError *error){
    DLog(@"error: %@", error);
};


NSUInteger groupTypes = ALAssetsGroupAlbum | ALAssetsGroupEvent | ALAssetsGroupFaces;
[_assetsLibrary enumerateGroupsWithTypes:groupTypes usingBlock:listGroupBlock failureBlock:failureBlock];

所以代码直接来自WWDC 2010演示。会议421。

问题

listGroupBlock DLog永远不会被调用。我的_groups数组是空的; 从技术上讲,此块被称为1次,但group参数为nil。

P.S。 DLog只是非常漂亮的NSLog,其中包含类名和行。

1 个答案:

答案 0 :(得分:0)

问题在于,在我测试的设备上,iPad 1没有专辑/活动或面孔。

所以我从

改变了groupType

NSUInteger groupTypes = ALAssetsGroupAlbum | ALAssetsGroupEvent | ALAssetsGroupFaces;

NSUInteger groupTypes = ALAssetsGroupLibrary | ALAssetsGroupSavedPhotos | ALAssetsGroupAlbum | ALAssetsGroupEvent | ALAssetsGroupFaces;