Ios 为什么NSMetadataQueryDidUpdateNotification会被快速连续调用几次?
为了监视iCloud容器中的文件更改,我注册了Ios 为什么NSMetadataQueryDidUpdateNotification会被快速连续调用几次?,ios,icloud,nsmetadataquery,Ios,Icloud,Nsmetadataquery,为了监视iCloud容器中的文件更改,我注册了 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(processiCloudUpdates:) name:NSMetadataQueryDidUpdateNotification
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(processiCloudUpdates:)
name:NSMetadataQueryDidUpdateNotification
object:nil];
理想情况下,每当我收到更新消息时,我都会打开我的每个UIDoc并检查设置是否已更改。如果只调用了一次nsMetadataQueryIDUpdateNotification
,这就可以了。但是,它被触发了好几次(我没有忘记removeObserver
等,并且有几个实例在运行),因此每次触发更新通知时加载所有文件是非常不切实际的(如果我有5个文件,并且调用了4次,我会连续快速打开20个UIDocs)。例如,如果我更新了一个文件(并且我的容器中只有一个文件),就会发生这种情况:
是否有其他方法来确定文件何时更改?NSFileVersion也没有多大帮助。
NSMetadataQueryIDUpdateNotification
每次在NSMetadataQuery
结果中更新任何NSMetadataItem
的某些属性时都会发出问题。它包括部分上传或下载进度。因此,在此通知处理期间尝试打开UIDocument
实例是错误的
相反,您可以通过观察NSMetadataItem
的属性值来确定文档下载的时间,然后将其排队等待打开
不要忘记处理nsMetadataQueryDiFinishGatheringNotification
。它是在接收者完成查询的初始结果收集阶段后发布的我认为“如何监控iCloud中的变化?”这个问题仍然存在。
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