FileSystem, FileManager, and FileTypes

Determining the type of a file

Adapted from this medium post

This uses the “universal” type indicators, introduced back in Mac OS X 10.4.

import MobileCoreServices // Only for iOS/Catalyst

extension URL {
    func isTypeOfFile(_ uttype: CFString) -> Bool {
        guard let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, self.pathExtension as CFString, nil) else {
            return false
        }

        return UTTypeConformsTo(uti.takeRetainedValue(), uttype)
    }
}

Use as url.isTypeOfFile(kUTTypeImage)

Last updated: 2020-06-07 16:24:37 -0700