You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义Intent中在App内继续执行的Objective-C正确语法咨询

自定义Intent中在App内继续执行的Objective-C正确语法咨询

嘿,我来帮你梳理下这个问题~你现在遇到的情况是自定义Intent在App扩展里没法完成参数解析,想把流程切回主App继续处理对吧?我看你写的代码确实有个小问题,导致报错了。

你之前尝试的代码是这样的:

completion([[PickWoodIntentResponse init] initWithCode:PickWoodIntentResponseCodeContinueInApp userActivity:nil]);

这里的核心错误是Objective-C的对象初始化方式不对——init是实例方法,必须先通过alloc创建出对象实例,才能调用init来完成初始化。你直接跳过alloc去调用init,肯定会出问题。

正确的写法有两种可选:

方式一:分步初始化(可读性更强)

// 先分配内存创建实例,再完成初始化
PickWoodIntentResponse *response = [[PickWoodIntentResponse alloc] initWithCode:PickWoodIntentResponseCodeContinueInApp userActivity:nil];
// 将响应传递给completion回调
completion(response);

方式二:一行简写(更紧凑)

completion([[PickWoodIntentResponse alloc] initWithCode:PickWoodIntentResponseCodeContinueInApp userActivity:nil]);

另外补充个小提示:如果后续主App需要用到扩展里的上下文数据,你可以不用传nil,而是创建一个NSUserActivity对象,把需要传递的信息存进去,这样主App在处理这个Intent的时候就能拿到这些关键数据啦~

备注:内容来源于stack exchange,提问作者JeffB6688

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 17:03:11