菜鸟教程小白 发表于 2022-12-12 15:04:19

ios - setImageData 在 iOS 8.3 中失败


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

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

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

<p>但是,在 8.3 中它给出了错误:</p>

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

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

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

<p>感谢期待。</p>

<p>另一个重要信息:</p>

<p> 返回“PHAuthorizationStatusAuthorized”。
还返回“ALAuthorizationStatusAuthorized”。 </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>据我所知,setImageData 方法从未打算用作删除 Assets 的方法。有可能在 iOS 8.3 Apple 上进行了修补,所以这不再有效。</p>

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

<pre><code>-(void)deleteAssetWithURL:(NSString*)assetURLString
{
    NSURL *assetURL = ;
    if (assetURL == nil)
    {
      return;
    }

    PHFetchResult *result = options:nil];
    if (result.count &gt; 0)
    {
      PHAsset *phAsset = result.firstObject;
      if ((phAsset != nil) &amp;&amp; ())
      {
            [ performChanges:^
            {
                ];
            }
                                              completionHandler:^(BOOL success, NSError *error)
             {
               if ((!success) &amp;&amp; (error != nil))
               {
                     NSLog(@&#34;Error deleting asset: %@&#34;, );
               }
             }];
      }
    }
}
</code></pre>

<p>使用 Photos 框架时,不要忘记在目标中链接 <code>Photos.framework</code> 并在源文件中导入 header :<code>#import <Photos/Photos.h> </code></p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - setImageData 在 iOS 8.3 中失败,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/29648120/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/29648120/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - setImageData 在 iOS 8.3 中失败