问题标签 [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 回答
192 浏览

objective-c - 使用 NSMetadataQuery 或 MDQuery 设置批处理参数

如果有人分享如何使用以下方式完成查询批处理,那将很有帮助 -

与 NSMetadataQuery 一起使用或使用

与 MDQuery 类一起使用时的结构。

我对批处理的理解是 - NSMetadataQueryGatheringProgressNotification/kMDQueryProgressNotification 观察者根据 timeInterval/MDQueryBatchingParams 中给出的值得到通知。

当我将 0.001f 传递给 timeInterval 的值时,我希望它每 1 毫秒通知一次方法,但事实并非如此。

0 投票
1 回答
192 浏览

objective-c - 作为参数传递给 MDQuerySetSortComparatorBlock (Spotlight API) 的块未被调用

我尝试在 MDQuery 框架内使用 MDQuerySetSortComparatorBlock 方法对查询结果列表进行排序。但是,作为参数传递给该方法的块根本不会被调用。下面是我用来发出查询请求的一段代码。任何帮助表示赞赏。

0 投票
2 回答
2160 浏览

objective-c - NSMetaDataQuery 从不使用 NSMetadataQueryDidFinishGatheringNotification 回调

对于我正在编写的 iCloud 插件,我将我的 iCloud 管理器类订阅到这些 iCloud NSMetaDataQuery 观察者:

问题是这些选择器实际上都没有被回调,甚至一次都没有,我特别需要NSMetaDataQueryDidUpdateNotification来跟踪云中文件的上传/下载进度。

奇怪的是,前几天我有这个工作,但不知何故它只是停止工作,我一直盲目地试图弄清楚问题到底是什么。通过订阅NSMetadataQueryDidStartGatheringNotification我可以看到它确实开始了,但就像它永远不会结束一样。这很奇怪。

我想知道是否有人对上述代码有什么问题有任何线索?或者我还能在哪里寻找问题。

感谢您的时间 :)

0 投票
1 回答
1057 浏览

ios - 处理基于 NSMetadataQueryDidUpdateNotification 非 UIDocument 的 iCloud 文件的问题

在尝试解决这个问题时,我已经很头疼了:在我当前的应用程序中,我使用 iCloud 来存储我的文档——但我不能使用基于 UIDocument 的数据存储。所以我的方法是遵循 WWDC 2012 文章 237(高级 iCloud 文档存储)并将我的文档视为鞋盒应用程序。

当我建立一个 NSMetadataQuery 来监视 iCloud 文档文件夹中的更改以注意文件更改时,就会出现真正的问题。我已经设置了我的查询,从 NSMetadataQueryDidFinishGatheringNotification 的观察者开始,当它触发时,我为查询启用更新并为 NSMetadataQueryDidUpdateNotification 设置了一个观察者。后者仅对一个文件更改有效,我没有找到如何让它重复触发以对相同或其他文件进行后续更改。以下是一些代码部分:

这里的任何建议都非常感谢。

它的真正作用:

  1. 当我直接(通过覆盖)修改 iCloud 文档容器中的文件时 - 什么都没有,查询不会触发。

  2. 当我通过 setUbiquitous:NO 序列修改文件时,写入本地文件 setUbiquitous:YES 查询会触发一次,我检测到更改,当我再次更改同一个文件时,不会调用查询处理程序。

因此,尽管我在 Apple 文档中发现写入 iCloud 文件的方式(如 1. 以上)适用于新文件,但似乎也有必要修改现有文件。

但是,无论如何,我怎样才能让查询机制重复运行呢?

干杯...

0 投票
2 回答
609 浏览

objective-c - NSMetadataQuery 的 NSPredicate(s) 以匹配包含目标日期的 kMDItemAccessedDates (array)?

更新:我找到了答案,尽管可能还有更好的方法 - 请参阅下面添加的答案。


聚光灯导入器导入元数据,元数据是访问项目的日期数组。看起来像这样:

我想查询在用户输入的特定日期访问的任何这些文件,但我没有找到正确的语法来执行此操作。想知道有没有可能做...

第一个问题是用户输入代表一天的日期,而不是日期和时间。

似乎我需要搜索那一天的任何日期,所以合乎逻辑:ADATE >= user_day_start && ADATE <= user_day_end

现在元数据中有一组日期,所以如果这些日期中的任何一个在 user_date 日期内,我真的希望它匹配。

如果这有效,那就太好了:

但这会引发异常:

并且似乎它可能只适用于单个日期而不是数组。像这样将“ANY”添加到格式字符串中:"ANY kMDItemAccessedDates between {%@, %@}"......没有帮助,仍然抛出异常。

试过这个,它没有抛出异常,但也没有真正起作用:

想知道是否有人对如何使这项工作有任何想法......或者知道这是不可能的(比如必须全部获得它们,然后在内存中进行过滤或其他东西;真的希望不是这样 - 它可能是一个很长的列表!)。

0 投票
0 回答
271 浏览

ios - NSMetadataQuery 按更新日期排序不起作用

我正在尝试按更新日期对 NSMetadataQuery 的结果进行排序,但它不起作用。

这是我的代码:

但是我收到的结果肯定不是按更新日期排序的……有什么建议吗?

0 投票
0 回答
346 浏览

iphone - iCloud NSMetadata query results empty

Hi friend i have got NSMetaDataQuery results are blank and i analyzed this link. i am confused.Please help me, here i add my source code of meta query

please help me how can i solve this issue if i did wrong code please how can i approach correct way.

0 投票
0 回答
234 浏览

objective-c - NSMetadataQuery 返回 searchScopes 之外的结果

我正在使用一款联合 Mac/iOS 应用程序,该应用程序通过 iCloud 将文档和数据相互同步。为了检测数据何时发生变化,我使用 NSMetadataQuery 来观察相关的 iCloud 文件夹。

这些应用程序还使用另一个纯本地数据存储,我使用 NSMetadataQuery 对象监控它,以防用户从 Finder 删除或添加文档。

每个单独的 NSMetadataQuery 对象都被赋予了不同的 searchScopes,因此它们不会意外地观察到彼此各自的文件夹。

问题是本地 Query 并不总是尊重它的 searchScope 并且会随机返回它之外的值。

这是我发现它行为不端的一个例子。

这是“找到”文件的网址

现在,我已经再次检查查询结果是否确实存在于 searchScope 中。这感觉像是 API 的一个错误,但在我向 Apple 提交报告之前,我想在这里仔细检查一下,这可能是我忽略的一些愚蠢的事情。

0 投票
0 回答
753 浏览

ios - UIDocumentStateSavingError 存在后如何打开 UIDocument?

在我基于 iCloud 的应用程序中,我注意到如果在 UIDocument 打开(并且尚未关闭)时发生崩溃,文档的状态有时会变为UIDocumentStateSavingError并且它永远不会再次成功打开。

当我[UIDocument openWithCompletionHandler:]在此之后运行时,文档永远不会打开,返回NOforsuccess和 5 (UIDocumentStateClosedUIDocumentStateSavingError) for documentState

在 iOS 5 上,我还观察到它NSMetadataQueryDidUpdateNotification会不断被调用(每秒),直到文件被删除并重新启动应用程序。这会导致应用程序中出现额外的可用性问题。

还有一件事,在 developer.icloud.com 上,我注意到该文件显示了第二个存在冲突的版本。但是,即使重新启动或重新安装应用程序,在我的任何设备上都没有发现此冲突。

我该怎么做才能让 UIDocument 正常打开?

这是我到目前为止所尝试的:

  • 使用 .检查[NSFileVersion unresolvedConflictVersionsOfItemAtURL:]冲突并删除所有旧版本[NSFileVersion removeOtherVersionsOfItemAtURL:]

  • 在调用[[NSFileManager defaultManager] evictUbiquitousItemAtURL:]之前调用[UIDocument openWithCompletionHandler:]以将文件重新下载到设备。

  • 从 developer.icloud.com 下载主要版本和冲突版本,查看其中是否有损坏或部分文件。两个都开得很好。

  • 我的头撞在我的桌子上。初步结果不成功。

0 投票
2 回答
1673 浏览

ios - NSMetadataQuery enableUpdates

我无法理解更新如何与 NSMetadataQuery 一起使用。

我正在尝试确定文件是否已完成从 iCloud 下载。我的初始查询清楚地告诉我文件没有下载,我可以开始下载,但如果下载文件需要任何时间,我想设置一个进度条。我调用了 enableUpdates,但它似乎并没有改变下载/下载状态或下载百分比,即使我相当确定文件正在下载。(我陷入了一个while循环。如果我退出并重新运行应用程序,它会看到文件已下载并跳过while循环。)

我是否必须开始新查询才能获取更新?如果是,那么 enableUpdates 和 disableUpdates 的作用是什么?

是否有一些不同的方式必须调用初始查询才能获取更新?我从文档中的某些内容中得到了这种印象,但我找不到任何似乎可以解释如何解释的细节。