为了监视我的iCloud容器中的文件更改,我注册了
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(processiCloudUpdates:)
name:NSMetadataQueryDidUpdateNotification
object:nil];理想情况下,每当我收到更新已完成的消息时,我希望打开我的每个UIDocs并检查设置是否已更改。如果NSMetadataQueryDidUpdateNotification只被调用一次,那就很好了。然而,它被触发了几次(我没有忘记removeObserver等,并且有几个实例在运行),因此每次触发更新通知时加载所有文件都是非常不切实际的(如果我有5个文件,它被调用了4次,我会快速连续打开20个UIDocs )。例如,如果我更新了一个文件(并且在我的无处不在的容器中只有一个文件),就会发生这种情况:
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也没有多大帮助。
发布于 2012-07-21 21:10:13
每次更新NSMetadataQuery结果中任何NSMetadataItem的某些属性时,都会出现NSMetadataQueryDidUpdateNotification问题。它包括部分上传或下载进度。因此,在此通知处理过程中尝试打开UIDocument实例是错误的。
相反,您可以通过观察NSMetadataItem的属性值来确定文档下载的时间,然后将其排队等待打开。
也不要忘了处理NSMetadataQueryDidFinishGatheringNotification。当接收方完成了查询的初始结果收集阶段时,它将被发送
https://stackoverflow.com/questions/11341992
复制相似问题