将 CSSearchableItem 添加到 Core Spotlight (MacOS) 时出现未知错误

2024-01-28

我最近想使用 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 编译了 Apple 的 Core Spotlight 示例项目,它实际上可以正常工作,没有错误。但是,我无法通过系统范围的 Spotlight 搜索获取索引项。

有谁知道可能会发生什么?顺便说一句,我正在运行最新的 High Sierra 版本。

[编辑]刚刚看到,其实还有人有这个问题。然而,问题还没有得到解答:使用 CoreSpotlight 时出错 https://stackoverflow.com/questions/46880821/error-while-using-corespotlight

[Edit2] 更新到 10.13.2 后,行为发生了变化。放在操场上的这段代码现在正在运行;但是,放入我的应用程序中的相同代码仍然会产生错误,但它确实包含更多信息。打印错误对象会导致:

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 和应用程序沙箱似乎变得更加严格。 经过大量挖掘才能完成这项工作,这就是我所做的,并且也应该适用于阅读本文的其他人:

  1. 在 Xcode 中,为您的目标切换“应用程序沙箱”功能CoreSpotlight代码运行。如果这是在框架中,则它必须是托管应用程序的目标。对于新项目来说这应该不是必需的(有关详细信息,请参阅这个错误报告 http://openradar.appspot.com/radar?id=4979822228930560).
  2. 为将运行 CoreSpotlight 代码的应用程序/二进制文件启用开发签名。就我而言,它是测试主机。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 CSSearchableItem 添加到 Core Spotlight (MacOS) 时出现未知错误 的相关文章

随机推荐

  • 在 Python 中绘制 3D 边界决策

    我正在尝试绘制 3D 决策边界 但它似乎并不像看起来那样工作 看看它是怎样的 我希望它像本例中那样显示 我不知道如何解释 但在上面的例子中 它实际上看起来像一堵 墙 这就是我想在我的代码中做的事情 然后按照我的代码 fig plt figu
  • Java发送midi消息到设备

    我有一个连接到树莓派的 APC40 MkII 在 pi 上 我正在运行 java 使用 java sound midi 包 我可以毫无问题地建立与 APC 的连接并接收其 midi 消息 但经过大量研究后 我仍然不明白如何向 APC 发送
  • Webactivator 无法在 IIS 7 上运行

    我有几个使用 WebActivator 来使用包的 Web 应用程序 在装有 IIS 7 5 Express 的本地计算机上 无论我在发布配置还是调试配置中进行测试 一切都正常 但是 在装有 IIS 7 5 的生产计算机上 WebActiv
  • 如何使用 jQuery 将文本添加到特定的 div 元素?

    我在使用 jquery 时遇到了问题 我的 HTML 是 div span class test span div div span class test span div 现在我尝试使用 Jquery 在 span 中添加文本 j spa
  • PostgreSQL 数据库服务

    我从他们的网站下载了 PostgreSQL http www postgresql org download windows http www postgresql org download windows 但是 我无法从中创建数据库pgA
  • MySQL:更新语句中等号冒号 =: 是什么意思?

    我遇到了以下 MySQL 查询 update table set itemId itemId startDate startDate where id id 但是我无法弄清楚 是什么意思 我认为 后面的名称是一个变量 但是如何检查里面有什么
  • Maven 替换器:替换值包含美元符号

    我正在处理一个 Maven 脚本 我必须修改一些文件内容 我目前正在使用替换插件 当替换值包含美元符号时 这会给我带来麻烦 我遇到问题的替换相对简单 在我的 log4j xml 中 替换该行
  • Kubernetes PVC删除POD的内容

    我有一个正在运行的 Kubernetes POD 并且已将 PVC 附加到它 PVC 卷为 opt stackstorm 默认情况下 opt stackstorm 中有一些文件 它们是 docker 官方镜像的一部分 当没有 PVC 连接到
  • 结构体是否可以序列化[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我可以序列化一个struct直接输入 因为它是值类型 我在课堂上使用过它 但想知道它是否可以单独用于结构 e g str
  • 挂锁的 Unicode 字形

    我需要使用看起来像挂锁的 unicode 字符 它用于表单下方的一个按钮 上面写着 CopyLink 上面有一个挂锁 表明当他们复制所在页面的链接时 访问该页面的 copylink 版本的人将不会被访问 能够修改表格 无论如何 我环顾四周
  • API 来确定手机运营商? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有免费的 API 或其他方式来确定手机号码注册的运营商 我希望我的应用程序能够广播短信 而无需他们从列表中选择运营商 UPDATE 有
  • 从方法返回可选值的 std::Optional 的最佳替代方案? (使用C++98/C++11/C++14)

    明显地 std optional如果使用 C 17 或 boost 则这是从函数返回可选值的最佳选择 另请参阅GOTW 90 http herbsutter com 2013 05 30 gotw 90 solution factories
  • chrome扩展shadow DOM导入引导字体

    所以我想在从 chrome 扩展内容脚本添加的 Shadowroot 中显示 Bootstrap 3 图标 到目前为止它不起作用 有帮助吗 manifest js 确实在 web accessible resources 中包含 woff
  • 使用 Vite 将 JS 和 CSS 捆绑到单个文件中

    我正在费尽心思地弄清楚如何在我的 Svelte 项目中从 Vite 构建单个 js 文件 其中包括我的 Svelte 项目中构建的所有 javascript 和 CSS 默认情况下 Vite 将应用程序捆绑到一个 html 文件 这可以 两
  • 解决设置属性“System.Windows.Controls.Decorator.Child”在 DataTemplate 中引发异常

    我创建了以下数据模板
  • 如何使用 NuGet 包部署 T4 包含文件

    我有一些 T4 包含文件 我想在多个项目中重用它们 因此 我创建了一个 NuGet 包并将文件放置在该包的 Tools 文件夹中 现在它们安装在packages PackageName x x x Tools文件夹 我可以在项目的 T4 文
  • localStorage - 将对象追加到对象数组中

    我正在尝试将对象本地存储在对象的数组中 如果我在控制台中尝试以下操作 它会完美运行 theObject theObject theArray arrayObj One 111 theObject theArray push arrayObj
  • 如何将音频数据数组转换为 wav 文件?

    我有一个为用户记录音频注释的功能 它使用 HTML5 并带有 Flash 后备功能 我可以通过 getUserMedia 从 HTML5 版本获取音频数据 但 Flash 回退以浮点数组形式提供数据 我需要这些数据作为 wav 文件 但我不
  • 如何在单独的列中设置每个 UICollectionView 部分

    我有一个UICollectionView其中含有给定量的sections它们中的每一个都包含一定数量的rows 现在 由于我将网格布局指定为垂直 UICollectionView看起来像这样 然而 当屏幕宽度放大时 例如在横向模式或 iPa
  • 将 CSSearchableItem 添加到 Core Spotlight (MacOS) 时出现未知错误

    我最近想使用 Core Spotlight 为我的一个项目中的搜索提供支持 但是 每当我将 CSSearchableItem 添加到 SearchIndex 时 我都会在完成处理程序中收到错误 其描述如下 The operation cou