菜鸟教程小白 发表于 2022-12-13 14:34:06

ios - 为什么 NSMetadataQueryDidUpdateNotification 被快速连续调用多次?


                                            <p><p>为了监控我的 iCloud 容器中的文件更改,我已经注册了 </p>

<pre><code>[ addObserver:self
                                       selector:@selector(processiCloudUpdates:)
                                             name:NSMetadataQueryDidUpdateNotification
                                           object:nil];
</code></pre>

<p>理想情况下,每当我收到已进行更新的消息时,我都想打开我的每个 UIDocs 并检查设置是否已更改。这很好,如果 <code>NSMetadataQueryDidUpdateNotification</code> 只被调用一次。但是,它被触发了好几次(我没有忘记 <code>removeObserver</code> 等并且有几个实例正在运行),因此每次更新通知时都加载所有文件非常不切实际被解雇(如果我有 5 个文件并且这被调用了 4 次,我会快速连续打开 20 个 UIDocs)。例如,如果我更新一个文件(并且在我的无处不在的容器中只有一个文件),就会发生这种情况:</p>

<pre><code>2012-07-05 10:51:39.565 Meernotes ... NSMetadataQuery update
2012-07-05 10:51:42.468 Meernotes ... NSMetadataQuery update
2012-07-05 10:51:45.216 Meernotes ... NSMetadataQuery update
2012-07-05 10:51:47.036 Meernotes ... NSMetadataQuery update
</code></pre>

<p>有没有其他方法可以确定文件何时更改? NSFileVersion 也没有多大帮助。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p><code>NSMetadataQueryDidUpdateNotification</code> 每次在 <code>NSMetadataQuery</code> 中的任何 <code>NSMetadataItem</code> 结果更新时发出。它包括部分上传或下载进度。因此,在此通知处理期间尝试打开 <code>UIDocument</code> 实例是错误的。 </p>

<p>相反,您可以通过观察 <code>NSMetadataItem</code> 的属性值来确定文档下载的时间,然后将其排队等待打开。</p>

<p>不要忘记处理 <code>NSMetadataQueryDidFinishGatheringNotification</code>。它在接收者完成查询的初始结果收集阶段时发布</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 为什么 NSMetadataQueryDidUpdateNotification 被快速连续调用多次?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/11341992/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/11341992/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 为什么 NSMetadataQueryDidUpdateNotification 被快速连续调用多次?