ShareExtension数据处理

在获取到分享数据的NSItemProvider去解析数据时,使用系统提供了相应的API

// Returns YES if the item provider has at least one item that conforms to the supplied type identifier.

- (BOOL)hasItemConformingToTypeIdentifier:(NSString*)typeIdentifier;

判断UTI时,是从NSItemProvider中的registeredTypeIdentifiers列表中注册的UTI和自己需要的数据类型做对比:

[itemProvider hasItemConformingToTypeIdentifier:@"public.image"];

itemProvider获取到的图片UTI注册信息列表为@"public.image"

@"public.image"与registeredTypeIdentifiers注册UTI相同或者下级则返回YES,不同则返回NO.

但是在项目中发现选取iPhone文件中的PDF等文件时registeredTypeIdentifiers中包含的UTI会有多个

<NSItemProvider: 0x2807e6680> {types = (

    "com.adobe.pdf",

    "public.file-url"

)}

系统提供的API去判断无法确认是URL还是PDF,增加了判断逻辑的复杂性.

因此项目中不去系统API去做判断,而是使用CFStringRef的判断方法.

NSString *registered = itemProvider.registeredTypeIdentifiers.firstObject;

CFStringRef registeredType = (__bridgeCFStringRef)registered;

BOOL isContain = UTTypeConformsTo(registeredType, kUTTypePDF);

registeredTypeIdentifiers中获取最精准的UTI去做判断,这样就能更精准的定位文件类型.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容