首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么NSMetadataQueryDidUpdateNotification会在短时间内连续被调用几次?

为什么NSMetadataQueryDidUpdateNotification会在短时间内连续被调用几次?
EN

Stack Overflow用户
提问于 2012-07-05 18:00:48
回答 1查看 1.8K关注 0票数 3

为了监视我的iCloud容器中的文件更改,我注册了

代码语言:javascript
复制
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(processiCloudUpdates:)
                                             name:NSMetadataQueryDidUpdateNotification
                                           object:nil];

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

代码语言:javascript
复制
2012-07-05 10:51:39.565 Meernotes[7842:707] ... NSMetadataQuery update
2012-07-05 10:51:42.468 Meernotes[7842:707] ... NSMetadataQuery update
2012-07-05 10:51:45.216 Meernotes[7842:707] ... NSMetadataQuery update
2012-07-05 10:51:47.036 Meernotes[7842:707] ... NSMetadataQuery update

有没有其他方法可以确定文件何时发生了更改?NSFileVersion也没有多大帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-21 21:10:13

每次更新NSMetadataQuery结果中任何NSMetadataItem的某些属性时,都会出现NSMetadataQueryDidUpdateNotification问题。它包括部分上传或下载进度。因此,在此通知处理过程中尝试打开UIDocument实例是错误的。

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

也不要忘了处理NSMetadataQueryDidFinishGatheringNotification。当接收方完成了查询的初始结果收集阶段时,它将被发送

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11341992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档