尝试使用[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, NSUnderlyingError=0x1702480a0 "操作无法完成。操作不允许"}
有趣的是,如果我将 UIImage* 与 function 一起使用,则创建请求在所有平台上都会成功[PHAssetChangeRequest creationReqeustForAssetFromImage:]
。
如果有人能解释发生了什么,我将不胜感激。是否与将照片存储在云端有关?我曾尝试为 iPad 上的照片关闭 iCloud,但我仍然得到相同的行为。