2010-03-13 8 views
15

J'ai un programme pour l'iPhone qui est censé faire des choses intelligentes (choisir les icônes appropriées pour les types de fichiers) donné une liste de noms de fichiers. Je suis à la recherche de l'iPhone prendre quelque chose comme/etc/mime.types ou quelque chose de similaire- un appel d'API est ce que je suppose que serait disponible pour le téléphone. Est-ce que cela existe?Où est la base de données de type iPhone MIME?

Répondre

43

Si tel était le cas, votre application n'aurait sûrement pas les autorisations pour la lire directement. Qu'essayez-vous de faire?

EDIT

Ceci est une fonction que j'ai écrit il y a un certain temps. Je l'ai écrit pour le Mac, mais il semble que les mêmes fonctions existent sur l'iPhone. En gros, vous lui donnez un nom de fichier, et il utilise l'extension de chemin pour retourner le type MIME du fichier:

#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

Je vient de modifier ma question d'être un peu plus clair. –

+1

Ne fonctionne pas sur iPhone – jww

+8

'Ne fonctionne pas sur iPhone' - mon mauvais. Vous devez inclure le framework MobileCoreServices, et '#import ' – jww

4

La fonction suivante retourne le type MIME pour une extension de fichier donné 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, avertissement à des fuites de mémoire lors de l'utilisation 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; 
}