0

在 iOS 7 之前,我们使用 Assets Library Framework 来获取 iOS 设备中照片和视频的总大小,请看这里: 如何在 iOS 中查找照片库中的图像和视频的总大小

任何人都可以使用照片框架帮助我做同样的事情,因为资产库框架已被弃用。另外,如果以更快的方式有大量照片,我如何计算总大小。您可以在此应用程序中看到: iPhone 版 MobiShield如果您转到更多 > 磁盘,您可以看到开发人员正在计算 2 秒内的总照片大小和视频大小。我怎样才能做到这一点?在目标 - C。

4

2 回答 2

0

使用这些:

- (NSUInteger)updateVideoCount
{
    ALAuthorizationStatus status = [ALAssetsLibrary authorizationStatus];
    if (status==ALAuthorizationStatusDenied) {
        [self goToSettingsAlert];
    }
videoCount = 0;
totalVideoSize = 0;

ALAssetsLibrary *assetLibrary = [[ALAssetsLibrary alloc] init];

[assetLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
    [group setAssetsFilter:[ALAssetsFilter allVideos]];
    [group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop) {
        if (asset)
        {
            NSString *type = [asset  valueForProperty:ALAssetPropertyType];
            if ([type isEqualToString:ALAssetTypeVideo])
            {
                videoCount++;

                ALAssetRepresentation *rep = [asset defaultRepresentation];
                totalVideoSize += rep.size;
            }

        }
        else
        {

        }
    }];
    if(group==nil)
    {
        [self loadTable];
        descTable.hidden = NO;
        [descTable reloadData];
    }
} failureBlock:^(NSError *error) {
}];

return 0;

}

- (NSUInteger)updatePictureCount
{
    photoCount = 0;
    totalPictureSize = 0;

    ALAssetsLibrary *assetLibrary = [[ALAssetsLibrary alloc] init];

    [assetLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
        [group setAssetsFilter:[ALAssetsFilter allPhotos]];
        [group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop) {
            if (asset)
            {
                NSString *type = [asset  valueForProperty:ALAssetPropertyType];
                if ([type isEqualToString:ALAssetTypePhoto])
                {
                    photoCount++;

                    ALAssetRepresentation *rep = [asset defaultRepresentation];
                    totalPictureSize += rep.size;
                }

            }

            else
            {

            }
        }];
        if(group==nil)
        {

            [self loadTable];
            descTable.hidden = NO;
            [descTable reloadData];
        }
    } failureBlock:^(NSError *error) {

    }];

    return 0;
}
于 2017-06-12T05:19:10.323 回答
0

用户照片资产(我尚未使用,但这是 IOS 8 要求)或已弃用但仍可使用当前版本的 ALASSETS,这将为您提供文件信息。

于 2016-03-14T07:52:37.723 回答