Почему com.canon.cr2-raw-image не соответствует public.camera-raw-image в соответствии с UTTypeConformsTo?
Я пытаюсь увидеть, является ли определенное изображение файлом изображения RAW, получив UTI для файла, а затем используя 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, и строки разделены таким образом, потому что я убедился в отладчике, что не было ничего смешного с преобразованием логического значения в BOOL и потерей битов; определенно conformsBoolean возвращается как все 0 бит)
Если self равно "com.canon.cr2-raw-image", а otherString равно "public.camera-raw-image", я ожидаю, что это вернет YES, но вместо этого это приведет к NO. Я отследил, где определен UTI "com.canon.cr2-raw-image", и нашел его в /System/Library/CoreServices/CoreTypes.bundle/Contents/Library/RawCameraTypes.bundle/Info.plist, где он действительно работает укажите, что com.canon.cr2-raw-image соответствует непосредственно public.camera-raw-image. Я заметил, что это объявляется как импортированный UTI, а не как экспортированный UTI, но так как мое приложение распознает объявление (как доказано, что я получил эту строку в первую очередь через UTTypeCreatePreferredIdentifierForTag()
), Я не думаю, что это должно иметь значение.
Что-то явно не так, что я делаю или неправильно понимаю здесь?