如何在ios7中使用ALAssetLibrary获取所有照片?

我有问题像iphone8中的苹果iphone一样得到照片。 我已经使用PHAsset和Photos.framework为ios8实现了。 现在,当我在ios7设备中运行相同的代码时,它什么都不返回。 所以,我和ALAssetLibrary一起去拍照。 使用ALAssetLibrary我也得到了所有照片,但这就像专辑明智的照片。 并且使用这个ALAssetLibrary我不能得到专辑创建日期而不是它的位置名称,因为我必须在我的每个部分的标题上显示这些数据。

我使用ALAssetLibrary在ios​​7中获取照片的代码:

_imagearray = [@[] mutableCopy]; __block NSMutableArray *tmpAssets = [@[] mutableCopy]; ALAssetsLibrary *assetLibrary = [[ALAssetsLibrary alloc] init]; [assetLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) { if (group) { [group setAssetsFilter:[ALAssetsFilter allAssets]]; [group enumerateAssetsWithOptions:NSEnumerationReverse usingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop) { if (asset!=nil) { [tmpAssets addObject:asset]; } }]; } self.imagearray = tmpAssets; NSLog (@“%@“,self.imagearray); } failureBlock:^(NSError *error) { NSLog(@"error enumerating AssetLibrary groups %@\n", error); }]; 

您在iOS 7中运气不佳。您观察到的AssetsLibrary仅返回相册(相机胶卷,用户相册)。 即使iOS 7中的照片应用程序显示Moments,iOS 7中也没有开发人员API来获取Moments。

我找到了自己的解决方案。

 + (ALAssetsLibrary *)defaultAssetsLibrary { static dispatch_once_t pred = 0; static ALAssetsLibrary *library = nil; dispatch_once(&pred, ^{ library = [[ALAssetsLibrary alloc] init]; }); return library; } -(void)loadAssets{ NSMutableArray *unSortArray = [[NSMutableArray alloc] init]; ALAssetsLibrary *library = [MomentsVCTR defaultAssetsLibrary]; [library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) { if (group == nil) { NSLog(@"Done!"); [self manageLocalAssets:unSortArray]; } [group setAssetsFilter:[ALAssetsFilter allAssets]]; [group enumerateAssetsWithOptions:NSEnumerationReverse usingBlock:^(ALAsset *alAsset, NSUInteger index, BOOL *innerStop) { if (alAsset) { [unSortArray addObject:alAsset]; } }]; } failureBlock: ^(NSError *error) { NSLog(@"No groups: %@",error); }]; } -(void)manageLocalAssets:(NSMutableArray*)unSortArray{ NSMutableArray *_resultArray = [[NSMutableArray alloc] init]; NSDateFormatter *df = [[NSDateFormatter alloc] init]; [df setDateFormat:@"dd-MMM-yyyy"]; NSLog(@"in loadassets"); NSSortDescriptor *descriptor=[[NSSortDescriptor alloc] initWithKey:@"date" ascending:NO]; NSArray *descriptors=[NSArray arrayWithObject: descriptor]; NSArray *reverseOrder=[unSortArray sortedArrayUsingDescriptors:descriptors]; for (int k=0; k