У меня есть программа для iPhone, которая должна делать интеллектуальные вещи (выбирая соответствующие значки для типов файлов), учитывая список имен файлов. Я ищу, чтобы iPhone взял что-то вроде /etc/mime.types или что-то подобное - вызов API, который я предполагаю, будет доступен для телефона. Это существует?
Где база данных iPhone MIME?
Ответ 1
Если бы это было так, ваше приложение, конечно же, не имело бы прав даже для чтения. Что вы пытаетесь сделать?
ИЗМЕНИТЬ
Это функция, которую я написал некоторое время назад. Я написал его для 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];
}
Ответ 2
Следующая функция вернет тип 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
}
Ответ 3
В 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;
}