Swift中如何在App Intent里正确使用IntentParameter.Duration?
正确实现App Intent的Duration参数配置
你之前的代码错误在于defaultUnit的写法,IntentParameter.Duration是系统预定义的Duration类型参数配置,无需手动添加泛型或可选型包装。以下是正确的实现方式:
import AppIntents import Foundation struct YourCustomIntent: AppIntent { static var title: LocalizedStringResource = "自定义时长Intent" @Parameter( title: "Minutes", defaultUnit: .duration(minutes: 1) // 直接使用预定义的Duration配置,可指定默认时长 ) var minutes: Measurement<UnitDuration> func perform() async throws -> some IntentResult { // 示例:将Measurement转换为分钟数值使用 let minuteValue = minutes.converted(to: .minutes).value print("输入的时长为:\(minuteValue)分钟") return .result() } }
关键说明:
defaultUnit: .duration()是系统提供的便捷配置,自动适配Measurement<UnitDuration>类型,支持指定默认的时长单位(如minutes、hours等)和数值- 如果不需要默认值,可以省略
defaultUnit参数,但需确保参数为可选类型(Measurement<UnitDuration>?),或者在Intent配置中设置必填 - 在业务逻辑中,可通过
converted(to:)方法将Measurement转换为目标单位的数值使用
内容的提问来源于stack exchange,提问作者Owen Zhao
相关产品推荐
相关产品推荐

