问题标签 [nsmetadataquery]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
193 浏览

ios - 停止查询之前的元数据查询释放

我正在使用 NSMetadataQuery 来获取 iCloud 普遍存在的 Documents 目录中的文件列表,以填充表格视图。该代码似乎可以正常工作,但我收到一条错误消息,指出在没有先调用 stopQuery 的情况下正在释放查询。我似乎找不到关于这个话题的讨论。我在这里错过了一些简单的东西吗?

这是查询和通知的功能:

这是错误:

2015-04-24 22:49:38.367 [26397:2377464] 在没有先调用 -stopQuery 的情况下被释放。为了避免竞争条件,您应该首先在调用 -startQuery 的运行循环上调用 -stopQuery

任何指导将不胜感激。

0 投票
0 回答
1307 浏览

icloud - iCloud Drive 通过 NSMetadataQuery 列出目录和文件

我已经构建了一个名为“rmc”的启用 iCloud 的应用程序。我的应用程序现在可以将文件上传到 iCloud Drive 并通过 NSMetadataQuery 获取元数据。但是 NSMetadataQuery 的结果仅包括我的 APP 容器中的文件。请参阅此链接:https://developer .apple.com/videos/wwdc/2015/?id=234,这是一个文件,据说NSMetadataQuery可以获取其他APP容器中的文件。我想要的是我可以获取iCloud Drive中的所有文件,就像应用程序“文档5”和“云精简版”,他们可以获取所有文件。 在此处输入图像描述

请看这张图。是APP“文档5”的UI。这个APP可以获取iCloud Drive的根目录信息。但是我的应用只能获取“rmc”文件夹中的文件。我也想获取所有iCloud Drive 中的目录和文件。就像“文档 5”一样。我希望有人可以帮助我并理解我的问题,因为我的英语很糟糕。谢谢!!!这是我的代码:

此方法使用 NSMetadataQuery 从 iCloudDrive 获取元数据。我设置了 searchScopes = [NSArray arrayWithObjects:NSMetadataQueryUbiquitousDocumentsScope,NSMetadataQueryAccessibleUbiquitousExternalDocumentsScope,nil];

这是 Apple 关于此值的文档: NSMetadataQueryAccessibleUbiquitousExternalDocumentsScope 搜索应用程序容器外的文档。此搜索可以找到用户之前使用文档选择器视图控制器打开的 iCloud 文档。这使您的应用程序可以再次访问文档,而无需直接的用户交互。结果的 NSMetadataItemURLKey 属性返回安全范围的 NSURL。有关使用安全范围 URL 的更多信息,请参阅 NSURL 类参考中的安全范围 URL。

0 投票
2 回答
388 浏览

ios - iCloud NSMetadataQuery 和更新 (NSMetadataQueryUpdateChangedItemsKey)

我正在监视我的 iCloud 沙盒 (iOS) NSMetaDataQuery,建议使用 - 一切运行良好。

我正在尝试使用NSMetadataQueryUpdateChangedItemsKeyinNSMetadataQueryDidUpdateNotification来有效地更新文件系统的内部模型。我面临的挑战是,当文件被移动/重命名时,我怎么知道原始文件路径——所以我可以更新我的模型?

看起来NSMetaDataItem对象是持久的(即当路径更改时更新相同的对象实例),因此我可以使用指针值作为我模型的一种索引。但是 - 我会利用一个明显的实现细节(可能会改变。)也许NSMetaDataItems在内存不足时被回收?

任何人都知道应该如何做到这一点(或者如果实际上是NSMetaDataItem对象在生命周期内持续存在NSMetaDataQuery- 并保持“附加”到同一个文件系统项。)

0 投票
2 回答
217 浏览

ios - NSMetadataQueryDidUpdateNotification,不能让它工作。包括代码片段

我无法让 NSMetadataQueryDidUpdateNotification 工作。坚持了好几天。下面的代码是否有异常。

0 投票
1 回答
576 浏览

nspredicate - 如何过滤 NSMetadataQuery

我正在尝试NSMetadataQuery使用谓词创建一个。在某一点上,我可能想收集 iCloud 可能在另一点上拥有的所有图像的所有视频。我不想要任何东西,只是搜索视频或搜索图像。不是同时两个。

我创建了这段代码:

只要我将此谓词添加到它,newQuery它就会给我零结果。

此查询的正确语法是什么?不要告诉我谓词也不起作用NSMetadataQuery,因为 sort 也不起作用。

0 投票
2 回答
1106 浏览

swift - 在 Swift 2.2 中使用 Spotlight 列出 El Capitan 上已安装的应用程序

我目前正在构建一个 mac 应用程序,将来应该能够在 OS X 上杀死和启动应用程序。

为此,我需要找到一种方法来获取机器上所有已安装应用程序的列表。

我已经做了很多研究,并决定使用 Spotlight 和 NSMetadataQuery 来获取列表。

我能够找到关于上述主题的这篇文章,并开始在 Swift 2.2(该项目的首选武器)中实现该功能。通过一些翻译,我能够使其工作,代码现在成功构建并运行。但是,在运行时,我似乎遇到了查询本身的问题:

这是我目前正在使用的代码。

测试

我的mac终端中的命令(各种变体)也没有给我任何结果,这让我想到了我的问题:

我是否以错误的方式设置了查询,或者此命令在“El Capitan”中不起作用?

有人可以帮我找出我的错误吗?我肯定很想最终完成这项工作!

0 投票
1 回答
917 浏览

swift - NSMetadataQuery 不返回任何数据

我尝试为我制作的应用列出我在 Mac 上的所有文件。我使用 NSMetadataQuery 但它不起作用。

这是代码:

如您所见,我打印了 metaQuery 的结果数,它的答案为 0。

我试图改变一些东西,比如 NSMetadataQueryIndexedLocalComputerScope 而不是 NSMetadataQueryUbiquitousDataScope 或谓词的格式,但无论哪种方式都不起作用。

知道为什么吗?

0 投票
1 回答
716 浏览

ios - NSMetadataQuery 什么都不返回

使用在 iOS 10 上运行的 xcode 8。尝试组合一个超级简单的 NSMetadataQuery。腰围差不多一天了。设法让它进行查询,但它没有从我的 iCloud 返回任何文档,没有。

它什么也不返回,没有错误,没有数据,只是空虚的空间。现在我是的,我没有在本地保存任何文档,但我对本地文档不感兴趣,我想要 iCloud 文档。

我的 plist 是这样说的...

我在这里想念什么?

0 投票
1 回答
138 浏览

cocoa - 如何通过 Spotlight 文件元数据属性/NSMetadataQuery 过滤文件 url 的 NSArray?

该类NSMetadataQuery似乎是 Finder/Spotlight 通过元数据搜索文件的方式。

Foundation 框架提供的 NSMetadataQuery 类。查询可以以两种模式运行:异步和带实时更新的异步。第一个简单地对初始搜索时存在的文件执行搜索。后者继续搜索。随着满足或不再满足搜索参数更新的文件更新数据。

https://developer.apple.com/library/content/documentation/Carbon/Conceptual/SpotlightQuery/Concepts/Introduction.html#//apple_ref/doc/uid/TP40001843-BBCFBCAG

但是,它似乎是围绕提供一个目录 ( searchScopes),然后异步返回在这些目录中找到的结果 ( NSMetadataQueryDidFinishGathering)。

我已经有一个包含文件 url 的 NSArray。我想使用与 Spotlight 搜索相同的元数据和查询语法来构建这些 NSURL 的过滤器/搜索。但是我将提供一个文件列表来快速归档,而不是提供一个目录并接收异步结果。

但是,这是使用标准 NSPredicate 搜索而不是文件元数据过滤器并引发错误:

此类与键 _kMDItemGroupId 的键值编码不兼容。

我感兴趣的 Spotlight 元数据属性在此处列出:
https ://developer.apple.com/library/content/documentation/CoreServices/Reference/MetadataAttributesRef/Reference/CommonAttrs.html#//apple_ref/doc/uid /TP40001694-SW1

Spotlight 元数据如何过滤文件 url 数组?

0 投票
1 回答
185 浏览

swift - 无法使用 NSMetadataquery 和 kMDItemUserTags 获取用户标签的聚光灯搜索结果

在尝试向我的控制器添加例程以在用户的​​计算机上搜索具有指定用户(Mavericks+)标签的用户文件后,我束手无策。我遇到了一个搜索将开始的块,但没有返回结果并且操作队列为零。

这是代码:

当我运行上面的代码时,它显示结果队列为零,结果计数为零。即使我取出 isGathering 循环,batchReturned 和 initialGatherComplete 函数也不会被调用。

我怀疑谓词格式可能存在问题,但是当我使用 mdfind 将查询放入终端时,这可以正常工作。