6

<><> ---- Aalok 已经回答了这个问题,我只是在等他写出来,所以我可以选择它作为正确答案。在那之前,除了进行他在下面描述的更改之外,我还必须调用 --self.library = [[ALAssetsLibrary alloc] init]; - 在每次尝试保存我的图像之前。作为预防措施,我还停止了 AVSession 的运行,直到保存后重新启动(使用 [session stopRunning]; 和 [session startRunning]; ----- <><>

<><> ----- 编辑 2:您不需要停止并重新启动 AV 会话,对此进行了彻底的测试,并且运行良好。----- <><>

<><> ----- 编辑 3:在我的设备上彻底测试后,它运行良好,一旦通过审查过程并放入商店,代码就无法正常工作。运行相同操作系统的两台相同设备(2x iPhone 4),一台使用我的开发版本,一台关闭应用程序,应用商店版本仍然存在错误。暂时放弃这个 ----- <><>

我正在使用此链接中的类别尝试保存到自定义文件夹:

http://www.touch-code-magazine.com/ios5-saving-photos-in-custom-photo-album-category-for-download/

现在它在某些时候有效,但不是全部。在评论中建议以下代码将检测组属性是否为零:

    if ([group valueForProperty:ALAssetsGroupPropertyURL] == nil)
{
NSLog(@”group properties are nil!”);
} else {
[group addAsset:asset];
}

我有,它确实检测属性是否为零。所以一切都很好。我当时正在努力设置属性并保存图像。我猜这个时候我们可以手动设置albumName并保存图片,我试过了,但是还是会报错。

有任何想法吗?谢谢你。

4

1 回答 1

4

我在使用相同的 .h 和 .m 文件时遇到了同样的问题,但是在处理了 2 到 3 天后找到了一个解决方案,而且解决方案非常简单,我必须在 .m 文件中进行更改

-(void)saveImage:(UIImage*)image toAlbum:(NSString*)albumName withCompletionBlock:(SaveImageCompletion)completionBlock

并且在

-(void)addAssetURL:(NSURL*)assetURL toAlbum:(NSString*)albumName withCompletionBlock:(SaveImageCompletion)completionBlock

方法我只是在调用内部方法之前添加这个

//THE CHANGE dispatch_async(dispatch_get_main_queue(),^{ //
[self writeImageToSavedPhotosAlbum:image.CGImage orientation:(ALAssetOrientation)image.imageOrientation completionBlock:^(NSURL* assetURL, NSError* error) 
    {
        //error handling
        if (error!=nil) 
        {
            completionBlock(error);
            return;
        }
        //add the asset to the custom photo album
        [self addAssetURL: assetURL toAlbum:albumName withCompletionBlock:completionBlock];
    }];
//THE CHANGE }); //

AND 另一个相同

快乐编码:)

编辑

在第二种方法中,我在每行下方添加completionBlock(nil);一行

[[NSNotificationCenter defaultCenter] postNotificationName:kSaveSuccess object:nil];

我使用这个通知来确保图像也保存在相册中。直到那时我显示UIActivityIndicator一些文本消息并在成功保存图像后显示一条弹出消息,指示图像以专辑名称保存在专辑中。虽然这一次用户界面没有响应,即用户除了按下设备的主页按钮之外不能做任何事情:) ;)

快乐编码:)

于 2012-07-03T09:52:21.957 回答