Доступ к файлу Чтение изображений, ранее записанных в NSDocumentDirectory FAILS - PullRequest
1 голос
/ 05 марта 2012

Недавно скачав и установив XCode 4.3 из App Store, я обнаружил серьезную и неожиданную проблему при чтении файлов изображений (больших файлов JPEG), ранее сохраненных в пользовательских документах приложения. Вопрос в следующем:

(i) Файлы получены из фото-библиотеки пользователя, и исходное изображение UIcropped (UIImagePickerControllerOriginalImage) правильно сохраняется в пользовательских документах. Проверка папки «Пользовательские документы» показывает, правильно ли сохранен файл изображения. При копировании этого файла в мою учетную запись создается копия, которую можно загрузить (например, в приложение предварительного просмотра или в iPhoto). Ожидаемое изображение загружается в Preview и iPhoto и может быть визуально правильным.

(ii) При попытке прочитать сохраненный файл стандартным методом

UIImage * image = [ UIImage imageWithContentsOfFile: file ] 

метод (где file - полный путь к хранимому файлу), возвращаемое изображение равно nil. nil также возвращается при попытке загрузки NSData через

NSData * data = [ NSData dataWithContentsOfFile: file options: 
NSDataReadingMappedIfSafe error: & error ]; 

В этом случае полный объект ошибки NSError * сообщается следующим образом:

CODE= 260, DOMAIN= NSCocoaErrorDomain, 
USERINFO = 
{ NSFilePath = "<User Documents>/<filename>.jpeg";
NSUnderlyingError = "Error Domain=NSPOSIXErrorDomain 
Code=2 \"The operation couldn't be completed. No such file or directory\"";
}

(iii) Изучение скопированного файла в Finder показывает, что «Вид» предыдущего записанного файла изображения теперь является «Документом», тогда как ранее это было (как и ожидалось) «Изображение JPEG». Это ЕДИНСТВЕННАЯ очевидная проблема с файлом.

(iv) Замена предыдущего записанного файла созданным извне файлом изображения JPEG С ТОЛЬКО ТО ЖЕ ИМЯ приводит к успешной загрузке файла через [UIImage imageWithContentsOfFile: file]!

НАСТОЯЩИМ СМОТРЕТЬ, ЧТОБЫ БЫТЬ ПРОБЛЕМОЙ РАЗРЕШЕНИЯ, ЧЕМ ЗАДАЧУ JPEG-ДАННЫХ. Новым в установке XCode 4.3 является Kind = "Document", заменяющий предыдущий (и работающий) Kind = "JPEG Image". МОЖЕТ ЛЮБОЙ, ПОЖАЛУЙСТА, ВКЛЮЧИТЬ СВЕТ НА ЭТО МАТЕРИ И, ЕСЛИ ВОЗМОЖНО, РЕШИТЬ РЕШЕНИЕ? Для меня этот вопрос актуален и расстраивает, так как он ломает инструмент дизайна PDF в процессе срочной разработки!

С наилучшими пожеланиями, Отрицательная энтропия

1 Ответ

0 голосов
/ 05 марта 2012

Можете ли вы отлаживать и "po file" с консоли? Я не видел проблемы с разрешением раньше, поэтому я подозреваю, что путь. Кроме того, мы видели проблемы с чувствительностью к регистру (iOS чувствительна к регистру, тогда как ваш симулятор может и не быть). Необходимо просмотреть полное path содержимое переменной.

...