ALAsset NSURL *assetURL 返回 NULL
Posted
技术标签:
【中文标题】ALAsset NSURL *assetURL 返回 NULL【英文标题】:ALAsset NSURL *assetURL returns NULL 【发布时间】:2013-10-10 22:56:37 【问题描述】:我在尝试使用 ALAssetsLibrary 将图像保存到我的 SavedPhotosAlbum 时遇到了一个奇怪的问题,尤其是在我使用 writeImageToSavedPhotosAlbum 方法时。
基本上我的问题是 NSURL 在我的完成块中返回 null...没有错误,但 URL 为 null。
方法如下:
UIImage *imageToSave = [libraryPicture imageFromCurrentlyProcessedOutput];
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library writeImageToSavedPhotosAlbum:[imageToSave CGImage] orientation:ALAssetOrientationUp completionBlock:^(NSURL *assetURL, NSError *error)
NSLog(@"AssetURL: %@", assetURL);
if(!error)
NSLog(@"\t ! Error");
NSLog(@"\t Error: %@", [error localizedDescription]);
NSLog(@"\t Error code %d", [error code]);
if(error != nil)
NSLog(@"\t ERROR != NIL");
NSLog(@"\t Error - Image Failed To Save With Error: %@", [error localizedDescription]);
NSLog(@"\t Error code %d", [error code]);
if(error == nil)
NSLog(@"\t ERROR == NIL");
];
我在几行之外使用了一个非常相似的方法(在另一个 switch 案例中),它可以在几乎相同的完成块中打印 URL(尽管调用的方法不同):
[stillCamera capturePhotoAsJPEGProcessedUpToFilter:selectedFilter withCompletionHandler:^(NSData *processedJPEG, NSError *error)
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library writeImageDataToSavedPhotosAlbum:processedJPEG metadata:stillCamera.currentCaptureMetadata completionBlock:^(NSURL *assetURL, NSError *error2)
if (error2 != nil)
NSLog(@"ERROR: the image failed to be written");
else
NSLog(@"PHOTO SAVED FROM STILL CAMERA - assetURL: %@", assetURL);
];
];
【问题讨论】:
【参考方案1】:如果您确实看到了您所说的行为,这似乎是资产库违反了其 API 合同。您应该向 Apple 提交一份雷达报告,并附上一个示例项目来证明这一点,或许还应该提交一份 DTS 事件以加快响应速度。
【讨论】:
以上是关于ALAsset NSURL *assetURL 返回 NULL的主要内容,如果未能解决你的问题,请参考以下文章