如何使用 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 下载照片并添加到特定相册?的主要内容,如果未能解决你的问题,请参考以下文章
我如何知道 Xcode Objective-C 中的错误在哪里引发?