尝试使用[PHAssetChangeRequest creationReqeustForAssetFromImageAtFileURL:]
创建照片资产时,出现“操作不允许”错误。我正在尝试从照片库复制另一张照片,方法是首先获取第一张照片的路径名称。iOS 8照片库 - 使用PHAssetChangeRequest添加资产时出错
该函数在仿真器上运行时按预期工作,但在实际设备上运行时失败。仿真器和设备都运行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
获取有关创建请求的错误:
错误消息
无法创建从文件错误Domai数据n = NSCocoaErrorDomain 代码= 257“操作无法完成。 (可可错误257)“ UserInfo = 0x17046ac40 {NSFilePath =/var/mobile/Media/DCIM/100APPLE/IMG_0042.JPG, NSUnderlyingError = 0x1702480a0”操作无法完成。 不允许的操作“}
有趣的是,创建请求所有平台上的成功,如果我用一个UIImage *与功能[PHAssetChangeRequest creationReqeustForAssetFromImage:]
。
我将不胜感激,如果有人能解释这是怎么回事。这是否与在云上存储照片?我曾尝试在iPad上关闭iCloud上的照片,但我仍然得到相同的行为
感谢您的回复。我没有检查网络访问是否允许。结果处理程序没有提供任何错误。并检查了canPerformEditOperation。我没有显示我的所有代码,试图使问题更清楚;猜测没有工作 – lp1756
没问题。是否有一个原因,你想要使用URL而不是使用creationRequestForAssetFromImage(YourImageHere)的图像。我相信这会将图像保存到相册中,而不是复制它。从照片库复制另一张照片到底是什么意思? –
我试图设置IPTC元数据,并且不想丢失现有的EXIF和IPTC元数据。据我了解,图像没有元数据。 – lp1756