estimatedAssetCount返回错误的计数

Isu*_*uru 5 count ios swift photokit phassetcollection

我需要显示带有图像数量的相机胶卷相册.我正在使用以下代码来获取相机胶卷相册.

let smartCollections = PHAssetCollection.fetchAssetCollectionsWithType(.SmartAlbum, subtype: .SmartAlbumUserLibrary, options: nil)
smartCollections.enumerateObjectsUsingBlock { object, index, stop in
    if let collection = object as? PHAssetCollection {
        print(collection.estimatedAssetCount)
    }
}
Run Code Online (Sandbox Code Playgroud)

我在照片应用中的相机胶卷中只有28张图像.但该estimatedAssetCount属性返回值9223372036854775807!

这仅适用于OS创建的相册,如相机胶卷.对于用户创建的常规相册,将返回正确的值.我做错了什么或这是一个错误?

如果是,有没有其他方法来获得正确的图像计数?

Isu*_*uru 10

本来应该看得更久一点.进入头文件PHAssetCollection显示这一小段信息.

这些数字只是估计数; 如果您关心准确性,则应使用从提取返回的实际对象数.如果无法快速返回计数,则返回NSNotFound.

所以我猜这是预期的行为而不是错误.所以我在下面添加了这个扩展方法,以获得正确的图像计数,它的工作原理.

extension PHAssetCollection {
    var photosCount: Int {
        let fetchOptions = PHFetchOptions()
        fetchOptions.predicate = NSPredicate(format: "mediaType == %d", PHAssetMediaType.Image.rawValue)
        let result = PHAsset.fetchAssetsInAssetCollection(self, options: fetchOptions)
        return result.count
    }
}
Run Code Online (Sandbox Code Playgroud)