首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将UIImage保存到PHAssetCollection

将UIImage保存到PHAssetCollection
EN

Stack Overflow用户
提问于 2015-07-03 02:46:25
回答 1查看 759关注 0票数 0

我正在使用以下代码尝试将新图像保存到PHAssetCollection中,特别是相机卷(也称为用户库):

代码语言:javascript
复制
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
    PHAssetChangeRequest *assetChangeRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:image];

    PHFetchResult *fetchResult = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:nil];
    PHAssetCollection *assetCollection = fetchResult[0];

    if (assetCollection) {
        PHAssetCollectionChangeRequest *assetCollectionChangeRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:assetCollection];
        [assetCollectionChangeRequest addAssets:@[[assetChangeRequest placeholderForCreatedAsset]]];
    }
} completionHandler:^(BOOL success, NSError *error) {
    if (!success) {
        NSLog(@"Error creating asset: %@", error);
    }
}];

我总是会犯错误。

执行块中的所有对象看起来都很好:

代码语言:javascript
复制
(lldb) po image
<UIImage: 0x174289ec0>, {1080, 1466}

(lldb) po assetCollection
<PHAssetCollection: 0x1741d5540> F6705124-D49B-4FDC-9191-7E84CFCCD148/L0/040 Camera Roll assetCollectionType=2/209

(lldb) po assetCollectionChangeRequest
<PHAssetCollectionChangeRequest: 0x170264640> title=(null) hasAssetChanges=1

而错误信息是非常无用的:

代码语言:javascript
复制
The operation couldn’t be completed. (Cocoa error -1.)

如何成功地将新映像保存到用户库中?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-03 03:26:33

通常,您的操作顺序是错误的;您不应该在performChanges块中执行任何取取操作。不管怎么说你也不必这么做。根本不要取集合。只需创建图片,简单明了,与第一行完全相同--但您甚至不需要保留对更改请求的引用:

代码语言:javascript
复制
[PHAssetChangeRequest creationRequestForAssetFromImage:image];

...and停车。在这一点上,照片已经添加到相机卷。

我刚试了一下,效果很好。

(当然,我假设您已经从用户那里获得了必要的权限…!)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31197665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档