我正在使用一款联合 Mac/iOS 应用程序,该应用程序通过 iCloud 将文档和数据相互同步。为了检测数据何时发生变化,我使用 NSMetadataQuery 来观察相关的 iCloud 文件夹。
这些应用程序还使用另一个纯本地数据存储,我使用 NSMetadataQuery 对象监控它,以防用户从 Finder 删除或添加文档。
每个单独的 NSMetadataQuery 对象都被赋予了不同的 searchScopes,因此它们不会意外地观察到彼此各自的文件夹。
问题是本地 Query 并不总是尊重它的 searchScope 并且会随机返回它之外的值。
这是我发现它行为不端的一个例子。
(lldb) po docQuery.searchScopes
$1 = 0x0000000101553ae0 <__NSArrayI 0x101553ae0>(
file://localhost/Users/aschenk/Library/Containers/com.chimpstudios.cloudclipboard/Data/Documents/LargeClippings
)
这是“找到”文件的网址
Erroneous query reporting >> file://localhost/Users/aschenk/Library/Mobile%20Documents/8YJAW5LA57~com~chimpstudios~cloudclipboard/Documents/D7D31630-81B7-47AA-BEE7-71A5B8D96B23.ccc/
现在,我已经再次检查查询结果是否确实存在于 searchScope 中。这感觉像是 API 的一个错误,但在我向 Apple 提交报告之前,我想在这里仔细检查一下,这可能是我忽略的一些愚蠢的事情。