我尝试通过获取文件的UTI来查看某个图像是否是RAW图像文件,然后使用UTTypeConformsTo()
查看图像的UTI是否符合“public.camera-raw-image”,但是当我尝试这样做时,UTTypeConformsTo()
返回false。以下是有问题的代码:
- (NSNumber*)bw_conformsToUTI:(NSString*)otherString
{
Boolean conformsBoolean = UTTypeConformsTo((CFStringRef)self, (CFStringRef)otherString);
NSNumber* conforms = [NSNumber numberWithBool:conformsBoolean];
return conforms;
}
(该方法被写为NSString上的一个类别,并且这些行被分开,因为我在调试器中确保从布尔值转换为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()
得到了该字符串),我不认为这应该会有所作为。
我在做什么或误解在这里有什么明显的错误吗?