macos - 使用 Coredata 进行创纪录水平的 Spotlight 索引

标签 macos cocoa core-data spotlight spotlight-plugin

我已阅读 https://developer.apple.com/library/mac/documentation/cocoa/Conceptual/SpotlightCoreData/Articles/recordLevel.html 上的教程现在已经很多次了,但由于某种原因我似乎无法得到它。

我尝试创建聚光灯导入器,手动将其复制到 ~/Library/Spotlight 但没有成功。

任何人都可以向我指出 CoreData-Spotlight-OSX 应用程序的工作示例吗?一个远程基本的东西就足够了。

xcode 模板默认将 .importer 存储在捆绑资源文件夹中,我在其他地方读到,如果应用程序是沙盒的,它应该位于 Library/Spotlight 文件夹中。

再次尝试,但失败了。

救命!

最佳答案

我编写了一个 CoreData/Spotlight 导入器。即使在最好的时期,这也总是有点挣扎。我在这些文档之前写了我的文档,在他们编写为您写出记录的守护进程之前。当 CoreData 团队第一次完成我的解决方案的版本时,他们的版本有几个严重的错误,导致我无法使用它,所以我报告了它们并切换回我的版本 - 我希望现在它们已经修复,但这是需要注意的事情。

另一件事是,很多应用程序开发者(包括我)发现 Spotlight 导入 CoreData 记录的功能在 Mavericks 上被破坏,这显然是因为沙箱的变化。这已被广泛报道,我已经提交了一个错误。如果您在小牛队,您也可能会遇到这个问题。

但是,要调试:

您应该做的第一件事是向导入器添加一些 NSLogging,并在对数据库进行更改后检查控制台。等待查看以“md”(元数据)开头的任何进程是否报告错误,或者是否看到您编写的日志。

此外,执行 man mdimport 并使用记录文件之一从插件的命令行运行 mdimport。使用 mdimport 的 -g 选项,您可以在任何地方测试导入器,而使用 -d4,您将获得大量调试信息。

您还可以执行mdimport -L 来查看系统是否可以识别您的导入程序。

一般来说,您需要查明 ⑴ 您的导入程序是否正常工作,或者只是崩溃(通过直接使用 mdimporter 运行它) ⑵ 系统是否看到您的导入程序并识别出它负责您选择的文件类型的 stub (mdimport -L) 和 ⑶ 您的导入者是否有权查看记录文件(通过运行您的应用程序并观看控制台)。

关于macos - 使用 Coredata 进行创纪录水平的 Spotlight 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21392278/

相关文章:

c++ - 不在 Qmake 项目中构建 OBJ-C 代码

iphone - 如何保证核心数据实体的单一实例

objective-c - 如何使主窗口在 Cocoa 中可见?

macos - CocoaPods依赖安装错误

objective-c - cocoa 坐标和碳坐标之间的转换?

ios - NSFetchedResultsController 复杂的获取请求和模型

ios - 当更新数据库后只有少量数据发生变化时,数据通常如何在设备上重新加载/显示? (概念上)

macos - 使用 pkgbuild 打包不同的文件类型

objective-c - NSDocumentController 最近的文档沙盒(奇怪)问题

python - Py_Initialize 抛出 ModuleNotFoundError : No module named 'encodings'