2010-03-13 13 views
15

Tengo un programa para el iPhone que se supone que está haciendo cosas inteligentes (seleccionando los íconos apropiados para los tipos de archivos) dada una lista de nombres de archivos. Estoy buscando que el iPhone tome algo como /etc/mime.types o algo similar: una llamada API es lo que supongo que estaría disponible para el teléfono. ¿Existe esto?¿Dónde está la base de datos de tipo iPhone MIME?

Respuesta

43

Si lo hizo, seguramente tu aplicación no tendría permisos para leerla directamente. ¿Que estás tratando de hacer?

EDITAR

Ésta es una función que escribí hace un tiempo. Lo escribí para Mac, pero parece que existen las mismas funciones en el iPhone. Básicamente, se le da un nombre de archivo, y se utiliza la ampliación de la ruta para volver tipo MIME del archivo:

#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]; 
} 
+1

que acaba de editar mi pregunta para ser un poco más claro. –

+1

No funciona en iPhone – jww

+8

'No funciona en iPhone' - mi mal. Necesita incluir el marco MobileCoreServices y '#import ' – jww

4

La siguiente función devolverá el tipo MIME para una extensión de archivo determinado en 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 
} 
0

En obj-C, advirtiendo a pérdidas de memoria cuando se utiliza 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; 
} 
Cuestiones relacionadas