菜鸟教程小白 发表于 2022-12-12 09:47:32

iphone - 如何为文件夹中的所有文件和文件夹设置 NSURL 资源值


                                            <p><p>我试图通过将其 <code>NSURLIsExcludedFromBackupKey</code> 设置为 <code>1</code> 来阻止整个文件夹及其内容备份到 iCloud,如 <a href="https://developer.apple.com/library/ios/#qa/qa1719/_index.html" rel="noreferrer noopener nofollow">guidelines</a> 中所示。 .我可以将 key 设置为文件夹的 URL,但是我保存在其中的所有数据都有 <code>0</code> 的 <code>NSURLIsExcludedFromBackupKey</code>...</p>

<p>这是我的代码:</p>

<pre><code>//create the directory:
[ createDirectoryAtPath:path withIntermediateDirectories:NO attributes:nil error:nil];
NSURL *folderURL = ;

//prevent backup:
NSError *preventBackupError = nil;
BOOL success =
                                    forKey: NSURLIsExcludedFromBackupKey
                                     error: &amp;preventBackupError];      

//this prints 1 and 1:
NSLog(@&#34;resource values for directory: %@&#34;, error:nil]);
</code></pre>

<p>现在,如果我将文件(在本例中为 <code>config.xml</code>)保存在 <code>folderURL</code> 的子目录中,然后执行以下操作:</p>

<pre><code>NSURL *fileURL = ];
if ([ fileExistsAtPath:fileURL.path]) {
    NSLog(@&#34;resource values for config file: %@&#34;, error:nil]);
}
</code></pre>

<p>这会打印出 <code>NSURLIsExcludedFromBackupKey = 0;</code></p>

<p>我检查了其他 SO 答案,例如 <a href="https://stackoverflow.com/questions/10836134/nsurlisexcludedfrombackupkey-can-not-be-set-correctly" rel="noreferrer noopener nofollow">this one</a> , <a href="https://stackoverflow.com/questions/10866590/prevent-icloud-backup-of-folder" rel="noreferrer noopener nofollow">this one</a> , 或 <a href="https://stackoverflow.com/questions/12928509/cfurlsetresourcepropertyforkey-failed-when-disable-data-backup-on-nsdocumentdire" rel="noreferrer noopener nofollow">this one</a> ,我看不出我的语法有什么不同... </p>

<p>所以我的问题是,我是否必须手动将该 key 设置为文件夹中的每个文件?还是我做错了什么?</p>

<p>干杯</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>Cocoa 没有内置的单一方法来递归地将属性应用于资源及其后代。我想其中一些原因是为了简化错误处理。但是,这样做也很少见。</p>

<p>幸运的是,构建自己的非常容易:</p>

<ol>
<li>将所需属性应用于相关目录资源</li>
<li>向 <code>NSFileManager</code> 询问目录枚举器</li>
<li>枚举所有项目(默认情况下,<code>NSDirectoryEnumerator</code> 将为您下降到所有子目录),也将属性应用于每个项目</li>
</ol>

<p>您的情况似乎不需要这样做;将 <code>NSURLIsExcludedFromBackupKey</code> 应用到该目录,并完成它。</p></p>
                                   
                                                <p style="font-size: 20px;">关于iphone - 如何为文件夹中的所有文件和文件夹设置 NSURL 资源值,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/15525260/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/15525260/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iphone - 如何为文件夹中的所有文件和文件夹设置 NSURL 资源值