2015-04-30 23 views
3

尝试使用[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上的照片,但我仍然得到相同的行为

回答

0

作为参考,如果您使用云,您可能需要使用networkAccessAllowed: Bool:这将检查以查看是否可以根据需要从云端下载映像。

我不确定问题的背景,因为这篇文章有点不清楚。你查了字典resultHandler任何错误在函数调用

func requestImageForAsset(_ asset: PHAsset!, 
       targetSize targetSize: CGSize, 
       contentMode contentMode: PHImageContentMode, 
        options options: PHImageRequestOptions!, 
      resultHandler resultHandler: ((UIImage!, 
       [NSObject : AnyObject]!) -> Void)!) -> PHImageRequestID 

编辑资产之前,使用其canPerformEditOperation方法,看看是否允许资产编辑。

“要编辑的资产的图像或视频内容,第一次开始与资产的requestContentEditingInputWithOptions:completionHandler:方法的内容编辑会话。您可以通过设置改变块内的变更请求的contentEditingOutput财产犯下内容编辑。有关资产的详细信息内容编辑,请参阅PHAsset Class Reference。“

+0

感谢您的回复。我没有检查网络访问是否允许。结果处理程序没有提供任何错误。并检查了canPerformEditOperation。我没有显示我的所有代码,试图使问题更清楚;猜测没有工作 – lp1756

+0

没问题。是否有一个原因,你想要使用URL而不是使用creationRequestForAssetFromImage(YourImageHere)的图像。我相信这会将图像保存到相册中,而不是复制它。从照片库复制另一张照片到底是什么意思? –

+0

我试图设置IPTC元数据,并且不想丢失现有的EXIF和IPTC元数据。据我了解,图像没有元数据。 – lp1756

相关问题