问题标签 [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.
objective-c - NSMetaDataQuery,将 setSearchScope 路径设置为递归?
在 Objective-C 中,我设置NSMetaDataQuery
并设置setSearchScope:
查询以搜索特定用户的 Documents 文件夹。搜索有效,但不会沿目录树递归,仅在 Documents 文件夹中搜索。
我试过通配符,但没有乐趣。
这基本上是我尝试过的,除了不在 Documents 目录下搜索之外,它可以工作:
iphone - NSMetadataQuery 没有完成收集(没有通知)
我正在为我的应用程序(通过 iCloud)制作备份管理器。我做了一些测试,基础工作正常。但几天后它停止了。我NSMetadataQuery
用于搜索是否存在备份文件。我的备份文件被命名为例如Backup29112011154133.xml
其中数字代表备份日期(格式为ddMMyyyyHHmmss
)。我检查它-viewDidAppear
:
问题是- (void)queryDidFinishGathering:(NSNotification *)notif
永远不会执行。我在那里放了断点和 NSLogs 离子,但什么也没发生。
我还尝试检查其他通知,例如“查询确实开始收集”和“查询过程”。仅发布“查询已开始”通知。
我还有注册了 iCloud 并附加了权利文件的 AppID。
你能帮我看看这是怎么回事吗?也许我错过了什么?
cocoa - 为什么这段代码会导致 NSMetadataQuery 崩溃?
我有一个非常简单的 Xcode 项目。它有一个包含以下内容的单个文件应用程序委托
在界面生成器中,我有一个单一数组控制器,其内容数组绑定到测试控制器的query.results
键路径。我还有一个 NSSearchField,其值绑定到text
字符串。当我在搜索字段中输入一个字符时,整个程序在EXC_BAD_ACCESS
. 我已经缩小了范围,并发现如果我设置了self.query.predicate
内部-setText
函数,那么一切似乎都可以正常工作。此外,将设置包装在self.query.predicate
GCD 块中也可以。问题是,为什么NSMetadataQuery
从 KVO 通知中更改谓词会导致程序崩溃?(我检查了所有内容都是从主线程调用的)
我在 github 上有测试项目,因此您可以轻松克隆并检查问题。
ios - NSMetadataQuery 忽略自定义文件包类型
我正在使用UIManagedDocument
s 来管理我在 iCloud 中的文件。设置后NSMetadataQuery
像这样:
我遇到了一个奇怪的问题 - 当我的文档被命名时没有文件扩展名(例如@"NewDocument2"
)或公共扩展名(例如 ).txt
时,元数据查询会正确找到DocumentMetadata.plist
文件。但是,当使用我的自定义文件扩展名时,查询永远不会找到任何东西......不是在查询开始时,也不是在我添加新文档时。
在我看来,查询可能正在查看我的文档及其自定义文件扩展名,并没有意识到它实际上是一个目录(无论如何是一个文件包),因此不会在内部查找DocumentMetadata.plist
文件。但是,我已经在应用程序的info.plist
.
也许我错误地宣布了我的尿路感染?我在创建它时遵循了 Apple 的指南(在基于文档的 iOS 应用程序编程指南和统一类型标识符概述中),但似乎出了点问题。
编辑:在“导出的 UTI”下info.plist
,我的类型设置为符合“com.apple.package”。
编辑: 我仍在努力解决这个问题。我现在正在通过不使用文件扩展名来解决它。
使用自定义文件扩展名时,我在处理iCloud元数据查询结果,DocumentMetadata.plist
文件肯定在文件包里面,但是元数据查询看不到。枚举查询结果时,将以下内容打印到日志中:
(“CoreDataLogs”目录中还有一堆文件,但为简洁起见,我没有在这里展示它们)。
我只能认为这个问题与错误地创建我的文件包UTI有关。有没有其他人成功使用 iCloud 的自定义文件包?这是一个错误吗?
ipad - iOS:在某些 iOS4 设备上出现“未找到符号”错误,但不是全部
我在用户的崩溃日志中收到以下消息:
Dyld 错误消息:找不到符号:_OBJC_CLASS_$_NSMetadataQuery
所以我理解解决方案是我应该将 Foundation 框架设置为“可选”。但令我感到奇怪的是,这种崩溃只发生在某些 iOS4 设备上,而不是其他设备上,而且它也不会在 4.3 模拟器中崩溃。它只发生在 iPad(运行 iOS4)上,但即便如此,它也只发生在其中的一些上。有人可以解释为什么会这样吗?
如果它是链接框架的错误,它应该在所有 iOS4 设备(或至少所有 iPad)上崩溃,对吗?
macos - iCloud:在 OS X 上获取云中存在的一系列 txt 文件
我正在尝试使用 Apple 推荐的 NSMetadataQuery 在我的应用程序的 iCloud 文件夹中获取一组 txt 文件:
不幸的是 queryDidFinishGathering: 永远不会被调用。我究竟做错了什么?
谢谢!
objective-c - 访问单个文件的元数据
有没有办法以编程方式访问 MacOS 上单个文件的元数据?
我知道 Apple 提供NSMetadataQuery
,但它似乎只允许在特定文件夹中搜索与某些参数匹配的文件。实际上,我不想搜索所有匹配的文件,而是检查特定文件是否匹配。
有没有办法或唯一的解决方案是分析查询结果并查看我的文件是否在其中?
ios5 - 两个 iCloud 设备使用 NSMetaDataQuery 得到不同的结果
我正在使用 iCloud 来存储带有简单 UIDocument 类的小音频文件。在 iPhone 4s 和 iPad 1 上运行 iOS 5.1。iPad 与 iCloud 容器正常通信。当我创建文档时,我看到它们从 iPhone 和 iPad 上的 Settings->iCloud->Storage&Backup->ManageStorage->MyAppName 弹出到 iCloud 商店。然而,iPhone 似乎正在连接到它自己的独立商店。我在那里创建的文件不会显示在任一设备的“设置”中,但似乎会转到某个容器。我可以在运行 NSMetaDataQuery 时看到它们(但我没有看到来自真实 iCloud 容器的文档)。
问题是如何开始的:当我第一次创建 iCloud 权利和容器标识符时,我省略了“com”。商店名称的前缀。这一直很好,直到我向 Apple 提交了应用程序更新,他们立即拒绝了上传,理由是 iCloud 容器标识符无效。更改标识符后,我的问题就开始了。我已经在两台设备上删除并重新加载了该应用程序,但 iPhone 仍然使用看似不可见的 iCloud 容器卡住。
请帮我让我的手机与真正的 iCloud 容器同步。谢谢!
cocoa-touch - 为什么在 iOS 4.2.1 上检查 [NSMetadataQuery 类] 会崩溃?
我正在尝试使用Marco Arment 描述的这种方法,在使用它之前检查一个类是否存在。使用正确的设置,类会在适当的时候自动弱链接。正如 Marco 所描述的,“您可以安全地继承子类或拥有指向您想要的任何东西的指针(只要您小心不要在它们不可用时实例化它们)”。
我的应用在 iOS 5 上运行良好。我遵循了链接中提到的条件:
- 基础 SDK 是最新的 iOS (iOS 5.1)
- 部署目标是 iOS 4.0
- C/C++/Objective-C 的编译器是 Apple LLVM 编译器 3.1(也尝试过 LLVM GCC 4.2)
每当我引用 NSMetadataQuery 时,我都会确保该类首先存在:
尽管如此,如果我尝试在装有 iOS 4.2.1 的 iPod touch 上运行我的应用程序,它会在启动时立即崩溃:
我已经尝试注释掉我的应用程序运行正常的所有代码。一旦我添加回对 NSMetadataQuery 的单个引用,它就会崩溃。我什至试过这个:
简单地包括该行,并且没有对 NSMetadataQuery 的其他引用,会使应用程序崩溃。更奇怪的是,检查其他 iOS 5 类不会导致任何问题:
正如预期的那样,效果很好。
我已经能够使用 uglier 解决该问题NSClassFromString()
以确保该类存在,但我很想知道为什么其他方法不起作用。
icloud - 如何让 NSMetadataQuery 将我保存的文档的文件夹视为包?
我正在编写一个应用程序,它可以在本地和 iCloud 上保存和加载文档。本地工作正常,但我遇到了 iCloud 问题。
文档保存为一个包 - UIDocument 读取和写入一个包含图像文件、缩略图文件和信息 plist 的 NSFileWrapper。当我将文档保存到 iCloud,然后查看“管理存储”下的文件时,我看到的是单个文件而不是包;更重要的是,当我使用 NSMetadataQuery 搜索文件时,它会为每个单独的文件而不是包返回一个 NSMetadataItem。结果,我的应用程序没有意识到要加载任何包,而且 iCloud 毫无用处。
我认为如果我设置了文档类型并正确导出了 UTI,那么这些包就会得到正确处理。对吗?如果是这样,将文档类型设置为包的清单是什么?我有:
- 添加了文档类型
- 将 LSTypeIsPackage 设置为 YES(我尝试过字符串 YES 和 bool YES)
- 将 CFBundleTypeExtensions 设置为包含一个字符串的数组:文件后缀
- 将 LSHandlerRank 设置为所有者
- 导出具有相同标识符的 UTI
- 将其设置为符合 com.apple.package
- 添加了一个 UITypeTagSpecification 字典,其中包含一个数组,用于键 public.filename-extension,其中包含一个字符串:文件后缀
我还尝试添加一个匹配的 Imported UTI 来匹配导出的 UTI,但没有运气。
我错过了什么?
更新:我注意到这个问题中的 OP看到了我想要的行为(即使他不想要它),所以它必须是可能的。