【发布时间】:2015-04-30 17:41:33
【问题描述】:
我在尝试使用 [PHAssetChangeRequest creationReqeustForAssetFromImageAtFileURL:] 创建照片资源时收到“不允许操作”错误。我正在尝试通过首先获取第一张照片的路径名来从照片库中复制另一张照片。
该功能在模拟器上运行时按预期工作,但在实际设备上运行时失败。模拟器和设备都运行 iOS 8.3。 iPad 设置为在 iCloud 上存储照片,而模拟器则不是。
我的代码 sn-p
[[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.)" 用户信息=0x17046ac40 {NSFilePath=/var/mobile/Media/DCIM/100APPLE/IMG_0042.JPG, NSUnderlyingError=0x1702480a0 "操作无法完成。 不允许操作”}
有趣的是,如果我将 UIImage* 与函数 [PHAssetChangeRequest creationReqeustForAssetFromImage:] 一起使用,则所有平台上的创建请求都会成功。
如果有人能解释发生了什么,我将不胜感激。是否与将照片存储在云端有关?我曾尝试在 iPad 上为照片关闭 iCloud,但仍然遇到相同的行为。
【问题讨论】:
标签: ios8 photosframework