苹果给出的建议是使用 NSMetaDataQuery[12]。 当检测到文件系统的这些变化时,NSMetadataQuery 会发送通知,使开发者能够及时更新应用界面或执行相应的逻辑操作。这一功能在处理文件同步和状态更新时尤其重要。 下面的代码将使用 NSMetadataQuery,根据给定的 Predicate、Scope 和 SortDescriptor 创建一个 AsyncStream。 时,开发者应该了解以下几点: NSMetadataQuery 是用于搜索 Spotlight metadata 的工具,而不是直接进行文件操作。 当不再需要响应变化时,应尽早关闭 NSMetadataQuery。这有助于释放资源并提高性能。
同样,由于占位文件使用了特殊的名称标记方式,为此,获取文件列表最好的方式,仍是通过前一篇文章介绍的 NSMetaDataQuery[5]。 更科学的做法是利用我们通过 NSMetadataQuery 获得的文件列表,并查看每个文件的元数据属性来确定其是否为占位文件。 这种方法的优势在于,它基于文件的实际元数据状态,而不仅仅是文件名。 频道: https://discord.gg/ApqXmy5pQJ [4] fatbobman.substack.com: https://fatbobman.substack.com [5] NSMetaDataQuery : https://developer.apple.com/documentation/foundation/nsmetadataquery [6] 不要使用协调器: https://developer.apple.com