iOS5将图像保存到自定义文件夹,ALAssetsLibrary失败

mrE*_*pty 6 save alassetslibrary ios5

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

<> <> -----编辑2:您无需停止并重新启动AV会话,对此进行了彻底测试,并且运行正常.----- <> <>

<> <> -----编辑3:在我的设备上对此进行彻底测试后,它完美运行,一旦完成审核流程并放入商店,代码就无法运行.两个相同的设备(2x iPhone 4)运行相同的操作系统,一个使用我的开发构建,一个关闭app sotre,ap商店版本仍然有bug.现在放弃这个----- <> <>

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

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];
}
Run Code Online (Sandbox Code Playgroud)

我有,它确实检测属性是否为零.一切都很好.我正在努力的是在那时设置属性并保存图像.我猜这时我们可以手动设置albumName并保存图片,我试过了,但错误仍然存​​在.

有任何想法吗?谢谢.

The*_*Dev 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 }); //
Run Code Online (Sandbox Code Playgroud)

另一个也一样

快乐编码:)

编辑

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

[[NSNotificationCenter defaultCenter] postNotificationName:kSaveSuccess object:nil];
Run Code Online (Sandbox Code Playgroud)

我使用此通知来确保图像也保存在相册中。直到那时,我会显示UIActivityIndicator一些文本消息,并且在成功保存图像后,会显示一条弹出消息,指示图像已保存在具有相册名称的相册中。虽然这次用户界面没有响应,即用户除了按设备的主页按钮之外无法执行任何操作:);)

快乐编码:)

  • 在第二个函数中,您的更改是高于还是低于 __block BOOL albumWasFound = NO; 线?我今晚很晚才在家尝试这个。感谢您发帖:) (2认同)