我正在尝试保存应用中的照片,创建相册并将照片保存到相册中,但它无法正常工作。
有时会保存一张或另一张照片,但绝不会全部保存。
祝大家好评,谢谢!
for(PFObject *pf in imageFilesArray)
{
PFObject *imageObject = pf;
PFFile *imageFile = [imageObject objectForKey:@"image"];
[imageFile getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
if (!error) {
UIImage *image = [UIImage imageWithData:data];
[self.library writeImageToSavedPhotosAlbum:[image CGImage] orientation:ALAssetOrientationUp completionBlock:^(NSURL *assetURL, NSError *error) {
if(assetURL) {
[self.library assetForURL:assetURL resultBlock:^(ALAsset *asset) {
[self addAsset:asset toGroup:@"App Album" inLib:self.library];
NSLog(@"Adicionado");
} failureBlock:^(NSError *error) {
NSLog(@"%@",error);
}];
}
}];
}
}];
}
[hud hide:NO];
- (void)addAsset:(ALAsset *)a toGroup:(NSString *)name inLib:(ALAssetsLibrary *)lib method
[lib enumerateGroupsWithTypes:ALAssetsGroupAlbum usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
if([[group valueForProperty:ALAssetsGroupPropertyName] isEqualToString:name]) {
[group addAsset:a];
*stop = YES;
NSLog(@"added asset to EXISTING group");
}
if(!group) {
[lib addAssetsGroupAlbumWithName:name resultBlock:^(ALAssetsGroup *group) {
[group addAsset:a];
NSLog(@"added asset to NEW group");
} failureBlock:^(NSError *error) {
NSLog(@"e: %@", error);
}];
}
} failureBlock:^(NSError *error) {
NSLog(@"e: %@", error);
}];
答案 0 :(得分:1)
我已与某人HERE讨论过此问题。
...当没有相册可用时,只有部分图像保存在for循环中。我测试了代码并发现 -addAssetsGroupAlbumWithName:resultBlock:failureBlock:将处理异步,这个方法将在未创建相册时多次调度(这可能需要一些时间)。
在这种情况下,您可以在图像添加过程之前创建相册。
[self.assetsLibrary addAssetsGroupAlbumWithName:<your_custom_album_name> resultBlock:nil failureBlock:nil];
随便看看这个lib:ALAssetsLibrary-CustomPhotoAlbum,它可能为你做很多有用的事情;)