• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - setImageData 在 iOS 8.3 中失败

[复制链接]
菜鸟教程小白 发表于 2022-12-12 15:04:19 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在使用 setImageData 通过以下方式删除照片:

[asset setImageData:nil metadata:nil completionBlock:^(NSURL *assetURL, NSError *error)
{
    // Do something
}];

此代码在 iOS 8.2 及更早版本中运行良好。

但是,在 8.3 中它给出了错误:

@"Error Domain=ALAssetsLibraryErrorDomain Code=-3311 \"User denied access\" UserInfo=0x175061ac0 {NSLocalizedFailureReason=The user has denied the application access to their media., NSLocalizedDescription=User denied access, NSUnderlyingError=0x17025d700 \"The operation couldn’t be completed. (ALAssetsLibraryErrorDomain error -3311.)\”}"

我尝试用一​​些有效的图像数据而不是“nil”替换图像数据和元数据字段。还是一样的错误!!

这是 iOS 8.3 中的一些错误吗?有什么解决办法吗?

感谢期待。

另一个重要信息:

[PHPhotoLibrary 授权状态] 返回“PHAuthorizationStatusAuthorized”。 [ALAssetsLibrary authorizationStatus] 还返回“ALAuthorizationStatusAuthorized”。



Best Answer-推荐答案


据我所知,setImageData 方法从未打算用作删除 Assets 的方法。有可能在 iOS 8.3 Apple 上进行了修补,所以这不再有效。

我建议您考虑使用包含用于删除 Assets 的专用方法的照片框架。 这是一个例子:

-(void)deleteAssetWithURLNSString*)assetURLString
{
    NSURL *assetURL = [NSURL URLWithString:assetURLString];
    if (assetURL == nil)
    {
        return;
    }

    PHFetchResult *result = [PHAsset fetchAssetsWithALAssetURLs[assetURL] options:nil];
    if (result.count > 0)
    {
        PHAsset *phAsset = result.firstObject;
        if ((phAsset != nil) && ([phAsset canPerformEditOperationHAssetEditOperationDelete]))
        {
            [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^
            {
                [PHAssetChangeRequest deleteAssets[phAsset]];
            }
                                              completionHandler:^(BOOL success, NSError *error)
             {
                 if ((!success) && (error != nil))
                 {
                     NSLog(@"Error deleting asset: %@", [error description]);
                 }
             }];
        }
    }
}

使用 Photos 框架时,不要忘记在目标中链接 Photos.framework 并在源文件中导入 header :#import

关于ios - setImageData 在 iOS 8.3 中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29648120/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap