Использование встроенных значков для mime-типа или UTI-типа в iOS

Проблема:

Я хотел бы иметь возможность использовать встроенные значки iOS для стандартных типов mime (или UTI-типов) в моем листинге содержимого двоичных файлов.

Предыстория:

Я рассмотрел возможность использования новой (начиная с версии 3.2) архитектуры документов, но при использовании UIDocumentInteractionController кажется, что предполагается, что фактические двоичные файлы уже находятся на локальном устройстве.

В моем случае я имею список файлов с удаленного сервера и знаю тип mime, имя, заголовок и т.д. для удаленного файла, поэтому я просто хочу показать список файлов с иконками (фактический двоичный файл загружается только по мере необходимости).

Метаданные, которые я получаю с сервера, содержат правильные mime-типы для двоичных файлов, поэтому теоретически я просто хочу получить системный значок на основе типа.

Решение проблемы?

Я попробовал следующий "хак" в качестве доказательства концепции, и он, кажется, работает, но это не кажется лучшим способом...

//Need to initialize this way or the doc controller doesn't work
NSURL*fooUrl = [NSURL URLWithString:@"file://foot.dat"];
UIDocumentInteractionController* docController = [[UIDocumentInteractionController interactionControllerWithURL:fooUrl] retain];

UIImage* thumbnail = nil;
//Need to convert from mime type to a UTI to be able to get icons for the document
NSString *uti = [NSMakeCollectable(UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType, (CFStringRef)self.contentType, NULL)) autorelease];

//Tell the doc controller what UTI type we want
docController.UTI = uti;

//The doc controller now seems to have icon(s) for the type I ask for...
NSArray* icons = docController.icons;
if([icons count] > 0) {
    thumbnail = [icons objectAtIndex:0];
}
return thumbnail;
13
задан Till 4 May 2011 в 00:20
поделиться