场景:本身想把IOS拍照和相册选照片功能集成到一起,就是把拍照的相片和选相册的相片放到一个collection中,然后上传,并且拍照的照片默认在相册选照片时是选中状态的,所以需要获取拍照的照片ALasset然后传到相册中去,
问题但是获取了相册的Alasset后,在往相册方法传时一直是空,可能是assetURL方法异步的问题,但后来晚上搜罗了下才发现之前写的方法有问题:
-(void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSString *type = [info objectForKey:UIImagePickerControllerMediaType];
if ([type isEqualToString:@"public.image"])
{
//先把图片转成NSData
UIImage* image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library writeImageToSavedPhotosAlbum:[image CGImage] orientation:(ALAssetOrientation)[image imageOrientation] completionBlock:^(NSURL *assetURL, NSError *error){
if (error) {
// TODO: error handling
} else {
[library assetForURL:assetURL resultBlock:^(ALAsset *asset) {
[self.selectPhotos addObject:asset];
[_imageCollection reloadData];
} failureBlock:^(NSError *error) {
}];
}
}];
}
}
问题就出现在ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; 这个类的声明上,
这个东东要作为公共的类进行声明,然后问题解决,具体原因不详,还请大牛多多指点。