Я получаю сообщение об ошибке «Операция не разрешена» при попытке создать фоторесурс с помощью [PHAssetChangeRequest creationReqeustForAssetFromImageAtFileURL:]
. Я пытаюсь скопировать другую фотографию из библиотеки фотографий, сначала получив путь к первой фотографии.
Функция работает, как и ожидалось, при работе на эмуляторе, но не работает, когда я запускаю ее на реальном устройстве. Эмулятор и устройство работают под управлением iOS 8.3. iPad настроен для хранения фотографий в iCloud, а эмулятор — нет.
Мой фрагмент кода
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
PHAssetChangeRequest *assetChangeRequest =
[PHAssetChangeReques creationRequestForAssetFromImageAtFileURL:currentImagePath];
} completionHandler:^(BOOL success, NSError *error) {
if (!success) {
NSLog(@"Error creating asset: %@", error);
}
currentImagePath
происходит от [PHImageManager requesstImageDataForAsset:]
, что дает актив фотографии, которую я пытаюсь скопировать. Путь выглядит так при запуске на реальном iPad:
file:///var/mobile/Media/DCIM/101IMPRT/IMG_1258.JPG
Это выглядит так, когда я запускаю его в эмуляторе:
file:///Users/<my-name>/Library/Developer/CoreSimulator/Devices/<long UUID-type code>/data/Media/PhotoData/Mutations/DCIM/100APPLE/IMG_0002/Adjustments/FullSizeRender.jpg
Получение ошибки при запросе на создание:
сообщение об ошибке
Невозможно создать данные из файла Error Domain=NSCocoaErrorDomain Code=257 "Операция не может быть завершена. (Ошибка Cocoa 257.)" UserInfo=0x17046ac40 {NSFilePath=/var/mobile/Media/DCIM/100APPLE/IMG_0042.JPG, NSUunderlyingError=0x1702480a0 "Операция не может быть завершена. Операция не разрешена"}
Интересно, что запрос на создание выполняется успешно на всех платформах, если я использую UIImage* с функцией [PHAssetChangeRequest creationReqeustForAssetFromImage:]
.
Буду признателен, если кто-нибудь объяснит, что происходит. Это связано с хранением фотографий в облаке? Я пытался отключить iCloud для фотографий на iPad, но все равно получаю то же самое.