将照片保存到相册iOS,不要保存所有照片

时间:2014-07-19 02:05:44

标签: ios objective-c photos

我正在尝试保存应用中的照片,创建相册并将照片保存到相册中,但它无法正常工作。

有时会保存一张或另一张照片,但绝不会全部保存。

祝大家好评,谢谢!

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);
}];

1 个答案:

答案 0 :(得分:1)

我已与某人HERE讨论过此问题。

  

...当没有相册可用时,只有部分图像保存在for循环中。我测试了代码并发现 -addAssetsGroupAlbumWithName:resultBlock:failureBlock:将处理异步,这个方法将在未创建相册时多次调度(这可能需要一些时间)。

     

在这种情况下,您可以在图像添加过程之前创建相册。

[self.assetsLibrary addAssetsGroupAlbumWithName:<your_custom_album_name>
                                    resultBlock:nil
                                   failureBlock:nil];

随便看看这个lib:ALAssetsLibrary-CustomPhotoAlbum,它可能为你做很多有用的事情;)