PHAsset get original file name

后端 未结 4 1183

I wonder if there any way to get the original file name using PHAsset?

I use the following code to extract the file info.

   [[PHImageManager defaultMa         


        
4条回答
  •  渐次进展
    2021-01-31 20:29

    I had to modify my code because it started returning nonsense names. My solution was to pick the resource based on asset's mediaType and resource's type, but maybe there is something easier:

    extension PHAsset {
        var primaryResource: PHAssetResource? {
            let types: Set
    
            switch mediaType {
            case .video:
                types = [.video, .fullSizeVideo]
            case .image:
                types = [.photo, .fullSizePhoto]
            case .audio:
                types = [.audio]
            case .unknown:
                types = []
            @unknown default:
                types = []
            }
    
            let resources = PHAssetResource.assetResources(for: self)
            let resource = resources.first { types.contains($0.type)}
    
            return resource ?? resources.first
        }
    
        var originalFilename: String {
            guard let result = primaryResource else {
                return "file"
            }
    
            return result.originalFilename
        }
    }
    

提交回复
热议问题