簡體   English   中英

從 iOS 8 中的 PHAsset 獲取文件擴展名?

[英]Get File Extension from a PHAsset in iOS 8?

有沒有辦法區分PHAsset的文件擴展名? 我的應用程序需要知道照片是否為 .GIF。 我沒有看到任何方法可以做到這一點。

更好的方法是使用uniformTypeIdentifier。 文件可以命名為任何名稱,可能包含也可能不包含文件擴展名。

[asset valueForKey:@"uniformTypeIdentifier"];

使用 valueForKey:您可以從使用“pathExtension”提取文件擴展名的文件中獲取 PHAsset 文件名,例如:PHAsset *selectedAsset = ...

NSString *fileName =[selectedAsset valueForKey:@"filename"];
NSString * fileExtension = [fileName pathExtension];

文件名是一個實現細節,可能會也可能不會告訴您文件的內容到底是什么。

當您調用requestImageDataForAsset ,Photos 傳遞給完成處理程序的dataUTI參數會告訴您圖像數據的統一類型標識符。

PHAssetResource.uniformTypeIdentifier似乎可以完成這項工作。 PHAsset可以均是通過使用類函數獲取PHAssetResource. assetResources(for:) PHAssetResource. assetResources(for:)

圖像並不僅僅意味着將有只有一個列表項,所以檢查出的文檔。

在 Swift 中,使用:

URL(fileURLWithPath: (asset.value(forKey: "filename") as! String)).pathExtension

Swift 5 優雅的解決方案

extension PHAsset {
    func getFileName() -> String? {
        return self.value(forKey: "filename") as? String
    }

    func getExtension() -> String? {
        guard let fileName = self.getFileName() else {
            return nil
        }
        return URL(fileURLWithPath: fileName).pathExtension
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM