我试图通过获取文件的 UTI 来查看某个图像是否是 RAW 图像文件,然后使用UTTypeConformsTo()
来查看图像的 UTI 是否符合“public.camera-raw-image”,但是当我尝试这样做时,UTTypeConformsTo()
返回错误的。这是有问题的代码:
- (NSNumber*)bw_conformsToUTI:(NSString*)otherString
{
Boolean conformsBoolean = UTTypeConformsTo((CFStringRef)self, (CFStringRef)otherString);
NSNumber* conforms = [NSNumber numberWithBool:conformsBoolean];
return conforms;
}
(该方法是作为 NSString 上的一个类别编写的,并且这些行是这样分开的,因为我在调试器中确保从 Boolean 转换为 BOOL 并丢失位不会发生任何有趣的事情;conformsBoolean 绝对以全 0 位返回)
如果 self 是“com.canon.cr2-raw-image”而 otherString 是“public.camera-raw-image”,我希望这会返回 YES,但结果却是 NO。我追踪了“com.canon.cr2-raw-image”UTI 的定义位置,并在 /System/Library/CoreServices/CoreTypes.bundle/Contents/Library/RawCameraTypes.bundle/Info.plist 中找到了它确实如此指定 com.canon.cr2-raw-image 直接符合 public.camera-raw-image。我确实注意到这是声明为导入的 UTI 而不是导出的 UTI,但是由于我的应用程序确实识别了该声明(证明我首先通过 获得了该字符串UTTypeCreatePreferredIdentifierForTag()
),我认为这不会有所作为.
我在这里做的或误解的事情有什么明显的错误吗?