使用Coredata记录级别Spotlight索引

时间:2014-01-27 21:41:36

标签: 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模板default-stores .importer在bundle-resources文件夹中,我在其他地方读过,如果应用程序是沙盒的,它应该在Library / Spotlight文件夹中。

再次尝试&失败。

帮助!

1 个答案:

答案 0 :(得分:2)

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

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

但是,要调试:

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

此外,使用其中一个记录文件从插件的命令行执行man mdimport和运行mdimport。使用mdimport的-g选项,您可以测试导入器的位置,使用-d4,您将获得大量的调试信息。

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

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