gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 19:32:30 25 4
gpt4 key购买 nike

我最近想使用 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 似乎变得更加严格了。经过大量挖掘以完成这项工作,这就是我所做的,也应该对其他阅读本文的人有用:

  1. 在 Xcode 中,为运行 CoreSpotlight 代码的目标切换“App Sandbox”功能。如果这是在框架中,则它需要是托管应用程序的目标。这对于新项目来说应该不是必需的(有关详细信息,请参阅 this bug report )。
  2. 为将运行 CoreSpotlight 代码的应用程序/二进制文件启用开发签名。就我而言,它是测试主机。

关于swift - 将 CSSearchableItem 添加到 Core Spotlight (MacOS) 时出现未知错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47392032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com