- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我最近想使用 Core Spotlight 为我的一个项目中的搜索提供支持。但是,每当我将 CSSearchableItem 添加到 SearchIndex 时,我都会在完成处理程序中收到一个错误,其描述如下:
The operation couldn’t be completed. (CSIndexErrorDomain error -1.)
根据 Apple 的引用资料,错误代码 -1
指的是 Unknown Error
,这并不是很有帮助。我在我的应用程序中同时添加了 CoreSpotlight 和 CoreServices 框架,但我真的不知道我可能做错了什么。
我举了一个最小的例子:
import Foundation
import CoreSpotlight
print("Start indexing...")
let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeText as String)
attributeSet.title = "test element"
attributeSet.contentDescription = "This is a description."
attributeSet.keywords = ["test1", "test2", "test3"]
let item = CSSearchableItem(uniqueIdentifier: "123455", domainIdentifier: "TestDomain", attributeSet: attributeSet)
var ready = false
CSSearchableIndex.default().indexSearchableItems([item]) { (error) in
if error == nil {
print("Success")
} else {
print(error?.localizedDescription)
}
ready = true
}
//Wait for the block to finish
while (ready == false) {
sleep(1)
}
print("Finish indexing...")
我设法从 WWDC17 为 Core Spotlight 编译了 Apple 的示例项目,它确实可以正常工作。但是,我无法使用系统范围的 Spotlight 搜索获得索引项目。
有谁知道可能会发生什么?顺便说一下,我运行的是最新的 High Sierra 版本。
[编辑] 刚刚看到,实际上还有其他人有这个问题。但是,问题尚未得到解答:Error while using CoreSpotlight
[Edit2] 更新到 10.13.2 后,行为发生了变化。放在 Playground 上的这段代码现在正在运行;但是,放入我的应用程序中的相同代码仍然会产生错误,但它确实包含更多信息。打印错误对象导致:
Error Domain=CSIndexErrorDomain Code=-1003 "(null)"
UserInfo={NSUnderlyingError=0x60000105f6e0
{Error Domain=NSCocoaErrorDomain Code=4097
"Couldn’t communicate with a helper application."}}
正如它向我显示的那样,这显然是框架中的一个错误,或者您对此有何看法?
最佳答案
在 macOS 10.13 中,SIP 和 App Sandbox 似乎变得更加严格了。经过大量挖掘以完成这项工作,这就是我所做的,也应该对其他阅读本文的人有用:
CoreSpotlight
代码的目标切换“App Sandbox”功能。如果这是在框架中,则它需要是托管应用程序的目标。这对于新项目来说应该不是必需的(有关详细信息,请参阅 this bug report )。关于swift - 将 CSSearchableItem 添加到 Core Spotlight (MacOS) 时出现未知错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47392032/
是否可以扩展 Spotlight 的搜索功能以支持其他命令? 例如,是否可以定义自定义 Web 搜索别名,这意味着我可以输入 yt,它会提供来自 youtube 的结果。 或者,如果我可以输入 sl
我想修改应用程序中文件的 Spotlight 元数据属性(即不在 Spotlight 导入器中),但我找不到任何 API 可以执行此操作。是否可以?指向相关文档的指针将是理想的选择。 如果它有帮助,这
我刚刚在 Ubuntu 16.04 下安装了 SikuliX(sikulixapi-2.0.4.jar) 和 Eclipse Oxygen。测试程序如下: import org.sikuli.scri
我正在使用 Spotlight API 在我的应用程序中提供搜索。我需要知道搜索字符串在文件中出现的次数,以便我可以实现排序描述符并对结果进行排序。有什么方法可以做到这一点而不必打开每个文件?其他库(
这就是我正在尝试做的事情: 我有一张图片。 我想在图像中获取一个圆形区域,并使其正常显示。 图像的其余部分应该显得更暗。 这样,圆形区域就像“突出显示”一样。 我非常感谢有关如何在 Python 中执
我对使用 DBpedia Spotlight 感兴趣。但是,我们需要为两个参数插入一个值信心 和 支持 .这两个参数的真正含义是什么? 我想确定文本中重要的、突出的 n-gram。在那种情况下,什么是
我想要两个光源:一个定向光源和一个聚光灯。我似乎无法理解我做错了什么——可能不了解着色器是如何工作的!我得到第一盏灯很好,但没有迹象表明第二盏灯(又名聚光灯)的效果。这是我想出的片段着色器: vary
此 Mac OS Spotlight 插件查询 Google 并在 Spotlight 中显示搜索结果: http://www.apple.com/downloads/macosx/spotlight
搜索一些关键字后,我需要在聚光灯搜索中显示我的应用程序。该关键词之一是“预订”。使用 CoreSpotlight,我设法让它出现在“应用程序框”本身上,但不在结果中的“应用程序”框中。 正如您所看到的
原始搜索运行良好,但查询不会注意到对不可见项目的任何更改。 可以再次运行查询,它将找到更新。 查询非零,并且尚未取消订阅聚光灯通知。 这是错误还是预期行为? 我已经在几个不同的项目中对此进行了多次测试
我希望创建一个可以放在 Spotlight 旁边的应用程序。 像 Dropbox、Mint、Alfred 这样的应用程序驻留在其中,并在操作系统的生命周期中一直存在。 我应该从哪里开始? 提前致谢,R
我正在使用 Spotlight API(Carbon 和 Cocoa 版本),似乎每隔一段时间就会出现同样的问题:查询从不运行,并且从不运行触发任何通知。不过,我想强调的是,大多数时候它确实运行,所以
我有一个需要身份验证的应用程序。在用户验证之前,菜单栏中仅存在菜单项的子集。用户成功通过身份验证后,我将应用程序的主菜单替换为 [NSApp setMainMenu:aMainMenu]; 不幸的是,
我为漫画文件创建了一个聚光灯导入器。属性已成功导入并可搜索。剩下的一件事是让属性显示在文件的获取信息窗口中。 看起来这应该是编辑 schema.xml 文件的简单问题,因此属性嵌套在 displaya
有办法实现这一点吗? 原因是我试图在添加/删除不可见文件和文件夹时强制聚光灯接收自动更新。我认为这种行为是不索引元数据的副作用(但我可能是错的)。我从这个SO question 得出这个结论. 解决方
我在应用程序中使用 Spotlight API (NSSMetadataQuery)。如果用户尝试对未编入索引的卷执行 Spotlight 查询,我想向他们显示一条有用的注释。 我可以通过运行“mdu
我想执行 Spotlight 查询以查找本地硬盘驱动器上的 Aperture 资料库。一个非常简单的方法是使用 kMDItemKind 但它的值取决于当前的用户语言: kMDItemKind =
不幸的是,我在网上找不到有关此主题的任何最新信息。类似于这里提出的问题: OS X Yosemite Spotlight extensions ,现在可以在 macOS Sierra 上扩展 Sp
我的iPad 2具有iOS 9.3.2,但Core Spotlight仍然无法正常工作。 想知道是否受支持吗? 最佳答案 按照Apple documentation: 注意 尽管iOS 9及更高版本提
我构建了 QAS(问答系统)并使用 DBpedia 作为知识库,所以我需要在我的问题中找到资源,例如( Algolia 、佛罗里达、巴拉克奥巴马..),当我使用“dbpedia-spotlight 工
我是一名优秀的程序员,十分优秀!