我的应用程序在 xcode 11.4 中找不到 sirikit intentdefinition 类

Mat*_*ias 6 xcode objective-c ios swift sirikit

我的应用从出来后就支持了几个 siri 快捷方式,好久没碰了。我的项目在 11.3.2 中编译和构建,但不在 11.4 中。

我得到的错误是应该从我的意图定义文件生成的类,以及我在我的意图处理程序中引用的类不再被找到。

例如,在我的意图定义文件中,我有一个名为“MyStatus”的自定义意图。

然后我有一个 MyStatusIntentHandler:

#import "MyStatusIntent.h"
@interface MyStatusIntentHandler<MyStatusIntentHandling> : NSObject
Run Code Online (Sandbox Code Playgroud)

在 11.4 中,我找不到“MyStatusIntent.h”文件。在 11.3.1 及更早版本中,它构建得很好。

我不太擅长项目配置和结构,所以我有点不知从哪里开始挖掘。如果有人有任何指示,以及 11.4 中的哪些内容可能是新的并给我带来问题,我会全力以赴。

Ale*_*der 9

我在混合swift+objc项目中遇到了类似的问题。

我的项目中有一个文件“Intents.intentdefinition”,用于单独的 Siri Extentsion 目标。此外,此文件包含在应用程序目标的编译中(用于使用生成的类向 UI 添加意图)。

Siri 扩展目标构建成功。

但是应用程序构建失败并显示错误:"'AnyIntent.h' not found",尽管这些文件是生成的(我已经检查过)。

我仅通过更改 Siri Extension 目标的构建设置来解决此问题

Intent Class Generation Language (INTENTS_CODEGEN_LANGUAGE)
from Automatic to Swift
Run Code Online (Sandbox Code Playgroud)

意图类生成语言设置为 Swift

之前生成的意图头文件的所有导入我更改为

#import <SiriIntents-Swift.h>
Run Code Online (Sandbox Code Playgroud)


Mat*_*ias 1

我进行了调查,并与 Apple 支持人员进行了交谈。事实证明,这与“遗留构建系统”有关。

一旦我在 xcode 项目设置中切换到新的构建系统,我就可以再次构建该项目。我认为,如果他们仍然支持遗留系统(他们确实这样做),它应该可以工作,但是哦,好吧。

在此处阅读如何切换: https://help.apple.com/xcode/mac/current/#/dev396bc94c7