自定义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
相关产品推荐
相关产品推荐

