Поскольку вы говорите, что вы загружаете эти данные, вы уже должны знать тип MIME. Вы создали объект данных, вы знаете, откуда пришли данные, и существует ограниченное количество типов MIME. Поэтому используйте то, что применимо к вашим данным. Для изображения это, вероятно, image/jpeg
или image/png
. Для видео есть куча типов video/
. Вы можете найти длинный список строк типа MIME на вашем Mac в /etc/apache2/mime.types
. Вы захотите, чтобы один или несколько из них зависели от того, какое видео вы имеете.
Определение типа MIME является липкой проблемой; NSData
может кодировать любые двоичные данные. Единственный способ определить, что было закодировано, - это изучить байты. Это, в свою очередь, означает некоторое понимание того, какие потоки байтов существуют в разных типах файлов. Должно быть возможно использовать словарь поиска во многих (но не во всех) случаях, и может существовать реализация с открытым исходным кодом где-то для общих типов файлов. Чтобы узнать, что с этим связано, попробуйте man file
на вашем Mac и посмотрите в /usr/share/file/magic/
, чтобы узнать, как идентифицируются различные типы файлов (команда file
не создает типы MIME, но она анализирует содержимое файла, чтобы попытаться определить типы файлов, так что это тот же принцип).