根据UTTypeConformsTo,为什么com.canon.cr2-raw-image不符合public.camera-raw-image?

时间:2013-01-10 23:47:19

标签: macos cocoa uti

我尝试通过获取文件的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()得到了该字符串),我不认为这应该会有所作为。

我在做什么或误解在这里有什么明显的错误吗?

0 个答案:

没有答案