J'essaie d'ajouter UTI pour une paire de types de fichiers, correspondant par extension. Je pense que je l'ai configuré correctement - à tout le moins, l'extension de fichier -> UTI mapping est reconnu (je l'ai déclaré comme un type importé dans info.plist). Cependant, lorsque j'essaie de retirer l'UTI de mon fichier de test, je récupère un UTI dynamique. Voici l'exemple de code que je utilise pour tester ces deux cas:Affectation UTI au type de fichier
NSString *previewTypeUTI = nil;
NSURL *previewFileURL = [NSURL fileURLWithPath:@"/Users/eblair/Desktop/EWF/thetestfile.myext1"];
[previewFileURL getResourceValue:&previewTypeUTI forKey:NSURLTypeIdentifierKey error:nil];
NSLog(@"%@", previewTypeUTI); // #1
NSString *testUTI = (NSString *)UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (CFStringRef)[previewFileURL pathExtension], NULL);
NSLog(@"%@", testUTI); // #2
[testUTI release];
NSLog # 1 imprime "dyn ########." Et NSLog # 2 imprime « com.mycompany.filetype1 ". Je me serais attendu à ce qu'ils impriment la même chose. Existe-t-il une étape supplémentaire pour faire fonctionner le mappage fichier-> UTI ou est-ce un cas de lancement des services de lancement? Le simple fait d'utiliser le mappage extension-> UTI n'est pas une option car je veux utiliser certaines API qui tirent parti des UTIs et ces API semblent utiliser le mappage file-> UTI.
Par souci d'exhaustivité, voici l'entrée plist pour les types importés:
<key>UTImportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.disk-image</string>
</array>
<key>UTTypeDescription</key>
<string>File Type 1</string>
<key>UTTypeIdentifier</key>
<string>com.mycompany.filetype1</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>myext1</string>
</array>
</dict>
</dict>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.disk-image</string>
</array>
<key>UTTypeDescription</key>
<string>File Type 2</string>
<key>UTTypeIdentifier</key>
<string>com.mycompany.filetype2</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>myext2</string>
</array>
</dict>
</dict>
</array>