问题:
我希望能够在我的二进制文件内容列表中使用标准 mime 类型(或 UTI 类型)的内置 iOS 图标。
背景:
我已经研究过使用新的(自 3.2 起)文档架构,但使用 UIDocumentInteractionController 似乎假设实际的二进制文件已经在本地设备上。
在我的情况下,我有一个来自远程服务器的文件列表,并且知道远程文件的 mime 类型、名称、标题等,所以我只想显示一个带有图标的文件列表(实际的二进制文件仅根据需要加载)。
我从服务器获得的元数据包含二进制文件的正确 mime 类型,所以理论上我只想根据类型获取系统图标。
解决问题?
我已经尝试过以下“hack”作为概念证明,它似乎有效,但这似乎不是最好的方法......
//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;