使用 Swift5.5、iOS15.0.1、
從 iOS15 開始,我意識到與我現有的 URL 擴展相關的一些棄用正在進行中。
我沒有找到關于如何重寫現有擴展的任何好的檔案。
這是我目前的大約實施。我不知道如何規避使用 iOS15 的 16 個折舊警告。對此的任何想法都非常感謝!
extension URL {
func mimeType() -> String {
let pathExtension = self.pathExtension
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue() {
if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
}
return "application/octet-stream"
}
var containsImage: Bool {
let mimeType = self.mimeType()
guard let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType, mimeType as CFString, nil)?.takeRetainedValue() else {
return false
}
return UTTypeConformsTo(uti, kUTTypeImage)
}
var containsAudio: Bool {
let mimeType = self.mimeType()
guard let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType, mimeType as CFString, nil)?.takeRetainedValue() else {
return false
}
return UTTypeConformsTo(uti, kUTTypeAudio)
}
var containsVideo: Bool {
let mimeType = self.mimeType()
guard let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType, mimeType as CFString, nil)?.takeRetainedValue() else {
return false
}
return UTTypeConformsTo(uti, kUTTypeMovie)
}
}
uj5u.com熱心網友回復:
所有 kUTType... 常量和全域 C 函式都被 UTType 結構替換。 https://developer.apple.com/documentation/uniformtypeidentifiers/uttype
就這樣import UniformTypeIdentifiers你就走了。
這是將檔案擴展名轉換為 mime 型別的簡單示例:
let ext = "txt"
if let type = UTType(filenameExtension: ext) {
// or: if let type = UTType(tag: ext, tagClass: .filenameExtension, conformingTo:nil) {
if let mime = type.preferredMIMEType {
print(mime) // "text/plain"
}
}
uj5u.com熱心網友回復:
為了與 iOS 15 及更早版本兼容以獲得正確的 UUType,因為 kUTType 已被棄用,您可以使用此代碼
var UTTypeID : Array = [ "url", "data", "plainText"]
// iOS 15 Deprecated kUTType, use UTType
func UTTypeCompat(strID : String) -> String
{
//0 - URL, 1 - Data, 2 - PlainText
let indexUTType:Int? = UTTypeID.firstIndex(of: strID)
if #available(iOS 15.0, *)
{
switch indexUTType {
case 0:
return UTType.url.identifier
case 1:
return UTType.data.identifier
case 2:
return UTType.plainText.identifier
default:
NSLog("Unsupported UUtype: \(strID)")
break
}
}
else
{
switch indexUTType {
case 0:
return kUTTypeURL as String
case 1:
return kUTTypeData as String
case 2:
return kUTTypePlainText as String
default:
NSLog("Unsupported UUtype: \(strID)")
break
}
}
// throw Exception
return "Err"
}
以及如何為任何版本的 iOS 獲取識別符號的示例
NSLog(UTTypeCompat(strID: "url"))
NSLog(UTTypeCompat(strID: "data"))
NSLog(UTTypeCompat(strID: "plainText"))
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/329017.html
上一篇:帶括號的角度查詢引數?
下一篇:如何檢查元素是否具有此值
