Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么NSMetadataQueryDidUpdateNotification会被快速连续调用几次?_Ios_Icloud_Nsmetadataquery - Fatal编程技术网

Ios 为什么NSMetadataQueryDidUpdateNotification会被快速连续调用几次?

Ios 为什么NSMetadataQueryDidUpdateNotification会被快速连续调用几次?,ios,icloud,nsmetadataquery,Ios,Icloud,Nsmetadataquery,为了监视iCloud容器中的文件更改,我注册了 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(processiCloudUpdates:) name:NSMetadataQueryDidUpdateNotification

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

[[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