如何使用 iOS8+ 的 Objective-C 从 URL 下载照片并添加到特定相册?

Posted

技术标签:

【中文标题】如何使用 iOS8+ 的 Objective-C 从 URL 下载照片并添加到特定相册?【英文标题】:How to download a photo from URL and add into specific album with Objective-C for iOS8+? 【发布时间】:2015-03-05 14:15:31 【问题描述】:

我想从这个 URL http://placehold.it/200x200 下载图片并添加到 ios 上的特定相册照片中。 我花了几个小时与ALAssetsLibrary 合作,但无法使其正常工作......这是我的代码:

// ViewController.h
@property (strong, atomic) ALAssetsLibrary* library;

// ViewController.m
- (void)viewDidLoad 
    [super viewDidLoad];
    self.library = [[ALAssetsLibrary alloc] init];

- (void)viewDidUnload 
    self.library = nil;
    [super viewDidUnload];


[...]
NSURL *image_url = [NSURL URLWithString:@"http://placehold.it/200x200"];
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:image_url]];

void (^completion)(NSURL *, NSError *) = ^(NSURL *assetURL, NSError *error) 
    if (error) NSLog(@"Error A : %@", [error description]);
;

void (^failure)(NSError *) = ^(NSError *error) 
    if (error == nil) return;
    NSLog(@"Error B : %@", [error description]);
;

[self.library saveImage:image toAlbum:@"Sample album" completion:completion failure:failure];
[...]

输出错误是:

Connection to assetsd was interrupted or assetsd died
Error B : Error Domain=ALAssetsLibraryErrorDomain Code=-3300 "Write failed" UserInfo=0x7ff4da570ae0 NSLocalizedFailureReason=There was a problem writing this asset because the write failed., NSLocalizedDescription=Write failed, NSUnderlyingError=0x7ff4da5709d0 "Write failed"

在线有多个版本的 ALAssetsLibrary,但我使用了最后一个。 a great tutorial 关于 ALAssetsLibrary 的使用,但它很旧(iOS5)。不知道iOS8是否仍然正确支持它。任何人都可以帮我下载图像并将其保存到特定相册中吗?提前致谢。

【问题讨论】:

【参考方案1】:

这应该有效:

 NSURL *image_url = [NSURL URLWithString:@"http://placehold.it/200x200"];
 UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:image_url]];
 [self.library writeImageToSavedPhotosAlbum:image.CGImage orientation:0 completionBlock:^(NSURL *assetURL, NSError *error) ];

【讨论】:

谢谢,但它给了我这个错误:Connection to assetsd was interrupted or assetsd died。同样在此示例中,我无法指定自定义相册。

以上是关于如何使用 iOS8+ 的 Objective-C 从 URL 下载照片并添加到特定相册?的主要内容,如果未能解决你的问题,请参考以下文章

如何添加此分享按钮? IOS8 与 swift

我如何知道 Xcode Objective-C 中的错误在哪里引发?

在 Swift 中推送 iOS8 的通知状态

使用 NSUserDefaults 时格式字符串未使用 Objective-C iOS 10 数据参数

iOS AAChartKit 图表库的使用

iOS AAChartKit 图表库的使用