I'm currently trying to use the new @UnionValue macro.
From what I understood, it allows multiple types for a parameter.
I created the following enum:
@UnionValue
enum IntentDuration {
    case int(Int)
    case duration(Measurement<UnitDuration>)
}
Then, I tried to use it in the following AppIntent:
struct MyIntent: AppIntent {
    static let title: LocalizedStringResource = "intent.title"
    static let description = IntentDescription("intent.description")
    
    static let openAppWhenRun: Bool = true
    
    @Parameter var duration: IntentDuration
    
    @Dependency
    private var appManager: AppManager
    
    @MainActor
    func perform() async throws -> some IntentResult {
        // My action
        
        return .result()
    }
}
However, I get the following error from Xcode at the @Parameter line:
'init()' is unavailable
Did I wrongly understand how this works? Is there another way to accept multiple types for a parameter?
I didn't manage to find any docs on this.
The initializers for @Parameter that allow you to omit the title parameter require iOS 18 or greater (for example: https://developer.apple.com/documentation/appintents/intentparameter/init(description:default:controlstyle:inclusiverange:requestvaluedialog:inputconnectionbehavior:)-2bbg1?language=_6)
If you are deploying to before iOS 18 you still need to specify a title like @Parameter(title: "Duration").
Additionally, UnionValue is currently only supported as the return return type from your perform() and can't be used as a Parameter or a Property at this time
 
  
  
  
    
  
