NSSavePanel, CGImageDestinationFinalize и OS X sandbox - PullRequest
0 голосов
/ 22 сентября 2011

Я использую NSSavePanel, чтобы позволить пользователю выбрать изображение для сохранения в моем приложении. Все работало нормально, пока я не включил изолированную программную среду и права на приложения. Проблема возникает с выбором уже существующего файла. Мой код такой:

// Создать URL-адрес для нашего файла и CGImageDestination для сохранения. CGImageDestinationRef imageDestination = CGImageDestinationCreateWithURL ((CFURLRef) [URL-адрес savePanel], (CFStringRef) newUTType, 1, NULL); CGImageDestinationAddImage (imageDestination, cgimage, (CFDictionaryRef) metaData); const bool result = CGImageDestinationFinalize (imageDestination);

Работает при выборе нового файла для сохранения изображения, но когда я выбираю существующий файл, он создает файл со странным именем помимо существующего файла и не может перезаписать содержимое целевого URL. И что еще хуже, я не получаю ошибку взамен и не могу обнаружить ошибку. Это ошибка в CoreGraphics или в моем коде? Есть ли обходной путь для этой проблемы?

1 Ответ

3 голосов
/ 07 октября 2011

Наконец, я обнаружил комбинацию основных графических вызовов для перезаписи уже существующего изображения, работающего в изолированной среде: CGDataConsumerCreateWithURL, за которым следует CGImageDestinationCreateWithDataConsumer. Похоже, что CGImageDestinationCreateWithURL не работает (по крайней мере, в OS X Lion 10.7.1) с включенной песочницей.

...