问题标签 [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.
macos - 如果我观看每个 NSMetadataQueryGatheringProgress,我是否需要 NSMetadataQueryDidFinishGathering?
NSMetadataQuery
在查询运行时发布NSMetadataQueryGatheringProgress
,然后NSMetadataQueryDidFinishGathering
在完成后发布。我收到了两个通知,它们工作正常。
不过,我注意到,当我得到 时NSMetadaQueryDidFinishGathering
,自最终收集进度以来从未有任何新数据。是否保证始终如此?
我已经阅读了这两个常量的文档,我不清楚这是否是预期的。
如果我在 中处理传入的结果NSMetadataQueryDidFinishGathering?
,那总是会得到我的每一个结果吗?
swift3 - NSMetaDataQuery 未完成
我正在尝试使用NSMetaDataQuery
. 我能够开始查询,但它永远不会完成。这是我的代码。
这将打印以下内容:
didStart
被调用,但从didFinish
未被didUpdate
调用。如果我在谓词中替换==
或==[cd]
替换,我会得到相同的结果。like
更改NSMetadataQueryUbiquitousDocumentsScope
为NSMetadataQueryUbiquitousDataScope
没有效果。我错过了什么?
同样的问题似乎已经在这个论坛上多次提出,但我没有找到任何令人满意的答案。
ios - 如何正确追踪 iCloud 上传?
我正在尝试在我的应用程序中集成 iCloud 使用。我确实了解该过程的工作原理及其基础。我已经能够将内容上传到 iCloud,但我需要跟踪上传进度,以改进我提供给最终用户的 Ux。
因此,基本上我使用以下方法上传文档:
在我调用这个方法之前,我还要初始化一个 MetadataQuery。此查询是特定的,它应该通过文档名称及其 URL 作为参数来获取文档的进度。像这样的东西:
方法实现:
这样做之后,我只接收由触发的事件NSMetadataQueryDidStartGatheringNotification
,即使如此,接收到的信息也不会带来任何可用的价值。
我期待从 接收事件NSMetadataQueryDidUpdateNotification
,将 MetadataQuery 与结果一起获取以获取NSURLUbiquitousItemPercentUploadedKey
值。但是,我没有收到任何此类通知,也无法监控上传进度。
我错过了什么吗?我没有想法,因为这看起来很简单,而且没有按预期工作。
(注意:我也需要在下载文档时实现类似的行为,我认为方法是相同的,只是更改查询的valueListAttributes
. 我担心这个问题在我实现时会持续存在)
谢谢
metadata - 在 iOS App Sandbox 上获取本地文件的 NSMetadataItem
我知道在 iOS 上您只能NSMetadataQuery
用于 iCloud 文件。但是,根据 Apple 的指南,您仍然可以NSMetadataItem
通过手动搜索所需的文件来获取FileWrapper
:
iOS 允许在 iCloud 中搜索元数据以查找文件对应的文件。它只提供了Objective-C 接口来查询文件元数据,
NSMetadataQuery
并且NSMetadataItem
只支持搜索iCloud 的搜索范围。与桌面不同,iOS 应用程序的沙箱不能使用元数据类进行搜索。为了搜索应用程序的沙箱,您需要使用
NSFileManager
该类递归地遍历沙箱文件系统中的文件。一旦找到匹配的文件,您就可以按照您需要的方式访问该文件。您还可以使用NSMedatataItem
该类来检索该特定文件的元数据。
但是,我找不到NSMetadataItem
从 iOS 沙盒上的本地文件获取的方法。您可以从文件 URL 进行初始化NSMetadataItem
,但这仅在 macOS 上可用。FileManager
似乎也没有可以从中检索的 API NSMetadataItem
。
如何获取NSMetadataItem
iOS App Sandbox 上的本地文件?
ios - NSMetadataQuery 获取多个(相同的)DidUpdateNotification
我正在验证一个应用程序是否可以在 iOS 11 上运行。
在 iOS 10 上,我NSMetadataQuery
在 scope 上启动了一个NSMetadataQueryUbiquitousDocumentsScope
,我得到了一个NSMetadataQueryDidFinishGatheringNotification
。就是这样。这是由于查询而收到的唯一通知。
但是,在 iOS 11 上,我又得到了一个NSMetadataQueryDidFinishGatheringNotification
,但此外,我得到了似乎是无限数量的NSMetadataQueryDidUpdateNotification
s,以每秒 1 的近似速率进入,所有这些都具有相同的有效负载。
我承认我对 iCloud 同步不够熟悉,我不确定这里到底发生了什么,但我很确定这不是正确的行为。
这是 iOS 11 中的错误吗?任何人都可以指出我追踪发生了什么的方向吗?
ios - 等待 iCloud 上传完成?
我目前正在使用类似于以下内容的代码上传到我的 iCloud 容器:
这工作正常,它将数据写入我的 iCloud 容器,但如果我尝试使用以下命令快速查询容器:
startQuery
除非我延迟几秒钟,否则该文件不会显示。我认为一旦writeToURL:
(这是一个阻塞调用)完成,NSMetadataQuery
应该能够立即找到它,但似乎并非如此。
有没有其他方法可以上传到我的 iCloud 容器并验证一切是否已完成?
swift - 如何改进使用 NSMetadataQuery 搜索 iCloud Drive 文件夹?
我正在尝试使用 NSMetadataQuery 列出 iCloud Drive 中特定文件夹的内容:
query.results
有我期待的所有物品。但是,当应用程序的云容器中的项目数量很大(> 10K)时,它会花费很长时间并且使用约 100% 的 cpu 接近一分钟。
我试图通过设置searchScopes
和/或设置将搜索范围限制为测试文件夹searchItems
:
但是没有用。请让我知道是否有办法将搜索限制到特定文件夹?或者,如果我可以使用不同的 api 来提高搜索速度?
objective-c - NSMetadataQuery 未在 macOS 10.13 的沙盒中触发
我一直在使用之前知道NSMetaDataQuery
用户何时截取屏幕截图并且它工作正常。但是在我开始时我只会收到通知,而在更新时我没有收到任何通知。我什至用过and 。无法弄清楚 Apple 发生了什么变化以及如何使其发挥作用。sandbox
macOS
10.13
10.13
NSMetaDataQuery
NSURL
startAccessingSecurityScopedResource
stopAccessingSecurityScopedResource
但是screenshotQueryUpdated
,仅在拍摄新屏幕截图queryDidFinish
时才调用。startQuery
ios - 没有收到 NSMetaDataQuery 更新通知
我有以下代码:
并且:
因此,上述“曾经工作”,跨两个设备。现在,两个设备都没有得到 queryDidUpdate() 调用。我试过删除应用程序,打开和关闭云权限,登录和退出 iCloud,重新启动设备。两个设备都可以读取它们的“冻结”云,但不会传播任何数据,也不会传递实时阶段通知。几天来,我确实在两台设备之间进行了一些繁重的测试(传输数百 MB 的图片)。而现在,一切都停止了。
每个设备的云令牌完全不同,但都是稳定的。使用 UIDocument 存储到云端。
我错过了什么吗?我需要在 iCloud 中重置什么吗?有没有我可以在某处检查的状态?
我不想更改应用程序包 ID 来摆脱困境……我想找到根本问题。感谢您的任何提示!
ios - 在 iCloud Drive 中执行“NSMetadataQuery”时出错
NSMetadataQuery
在 iCloud Drive 中执行时出现以下错误:
[错误] 无法查询 iCloud Drive 项目:错误域 = BRCloudDocsErrorDomain 代码 = 16“此客户端的同步受限” UserInfo={NSDescription=此客户端的同步受限}
这可能是我的问题
我有一个免费的开发者帐户。NSMetadataQuery
但是,我还没有发现任何关于在 iCloud Drive 中使用付费开发者帐户的要求。
请注意,我发现必须使用付费开发者帐户才能使用与 iCloud Drive 不同的 iCloud Key-Value 和 Document Storage。
我试过的
我使用以下代码进行查询(调用Test().getAllFilesIniCloud()
):
开始查询时,它只打印,没有其他内容: