Widget配置时遇AppIntent获取错误,如何为radius参数设置默认值?
解决Widget配置中AppIntent 'radius'参数缺失的问题
这个报错是因为你的LNAction对应的AppIntent里的radius参数没有提供默认值,Widget配置时无法获取到该参数的有效值,下面是两种官方推荐的解决方式:
方法一:在@Parameter初始化器中设置默认值
如果radius有固定的默认值,直接在@Parameter的初始化参数里加上defaultValue即可,代码示例如下:
import AppIntents struct LNAction: AppIntent { static var title: LocalizedStringResource = "调整半径" // 给radius参数设置默认值,比如默认10.0 @Parameter(title: "半径", defaultValue: 10.0) var radius: Double func perform() async throws -> some IntentResult { // 执行你的逻辑 return .result() } }
方法二:使用Query的default方法
如果radius的默认值需要动态获取(比如从UserDefaults读取上次设置的值),可以用Query的default方法来提供默认值,代码示例:
import AppIntents struct LNAction: AppIntent { static var title: LocalizedStringResource = "调整半径" @Parameter(title: "半径") var radius: Double // 定义Query并设置默认值逻辑 static var parameterSummary: some ParameterSummary { Summary { \.$radius.default { // 这里可以写动态获取默认值的逻辑,比如从UserDefaults取 UserDefaults.standard.double(forKey: "lastRadius") ?? 10.0 } } } func perform() async throws -> some IntentResult { // 执行你的逻辑,比如保存当前radius到UserDefaults UserDefaults.standard.set(radius, forKey: "lastRadius") return .result() } }
两种方法选一种即可,第一种适合固定默认值的场景,第二种适合需要动态默认值的情况。
内容的提问来源于stack exchange,提问作者shanizoe
相关产品推荐
相关产品推荐

