Где находится база данных iPhone MIME? - PullRequest
18 голосов
/ 13 марта 2010

У меня есть программа для iPhone, которая должна делать умные вещи (выбирая соответствующие значки для типов файлов), учитывая список имен файлов. Я ищу для iPhone что-то вроде /etc/mime.types или что-то подобное - вызов API - это то, что я предполагаю, будет доступно для телефона. Это существует?

Ответы [ 3 ]

47 голосов
/ 13 марта 2010

Если бы это было так, ваше приложение, конечно, не имело бы права даже читать его напрямую. Что ты пытаешься сделать?

EDIT

Это функция, которую я написал некоторое время назад. Я написал это для Mac, но похоже, что те же функции существуют на iPhone. По сути, вы даете ему имя файла, и он использует расширение пути, чтобы вернуть MIME-тип файла:

#import <MobileCoreServices/MobileCoreServices.h>
...
- (NSString*) fileMIMEType:(NSString*) file {
    CFStringRef UTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (CFStringRef)[file pathExtension], NULL);
    CFStringRef MIMEType = UTTypeCopyPreferredTagWithClass (UTI, kUTTagClassMIMEType);
    CFRelease(UTI);
    return [(NSString *)MIMEType autorelease];
}
4 голосов
/ 26 ноября 2015

Следующая функция вернет mime-тип для данного расширения файла в Swift 2

import MobileCoreServices

func mimeTypeFromFileExtension(fileExtension: String) -> String? {
    guard let uti: CFString = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, fileExtension as NSString, nil)?.takeRetainedValue() else {
        return nil
    }

    guard let mimeType: CFString = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() else {
        return nil
    }

    return mimeType as String
}
1 голос
/ 12 сентября 2017

В obj-C предупреждение об утечке памяти при использовании C.

- (NSString *)guessMIMETypeFromFileName: (NSString *)fileName {
    CFStringRef UTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (__bridge CFStringRef)[fileName pathExtension], NULL);
    CFStringRef MIMEType = UTTypeCopyPreferredTagWithClass(UTI, kUTTagClassMIMEType);
    CFRelease(UTI);
    if (!MIMEType) {
        return @"application/octet-stream";
    }
    NSString *dest = [NSString stringWithString:(__bridge NSString *)(MIMEType)];
    CFRelease(MIMEType);

    return dest;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...