swift 如何在应用Intent中使用编译器条件(iOS 16)

o7jaxewo  于 2023-06-21  发布在  Swift
关注(0)|答案(1)|浏览(146)

我正在尝试构建一个AppIntent(iOS 16),其中包含一个参数,用户可以在快捷方式应用程序中输入数据。代码如下所示:

import Foundation
import AppIntents

struct MyIntent: AppIntent {
    
    static var title = LocalizedStringResource("Intent title")
    
    @Parameter(title: "user value", default: "not set")
    var myParameterVariableName: String
    
    static var parameterSummary: some ParameterSummary {
        Summary("Your Value: \(\.$myParameterVariableName)")
    }
    
    @MainActor func perform() async throws -> some IntentResult {
        print("action")
        return .result()
    }
}

当我尝试使用该Intent配置快捷方式时,它在快捷方式应用程序中看起来与预期的一样:

但是,参数的默认值应根据活动生成配置而有所不同。所以我试了这个:

#if DEBUG
@Parameter(title: "user value", default: "debug")
var myParameterVariableName: String
#else
@Parameter(title: "user value", default: "not set")
var myParameterVariableName: String
#endif

但这会导致在快捷方式应用程序中显示变量名称:

无论我选择构建哪个构建配置,它都不会将“debug”或“not set”显示为默认值。我可以点击它并输入数据,但不显示默认值。
有什么想法吗?有没有其他的方法来替换使用预处理器宏的变量?

2admgd59

2admgd591#

这个问题已经在Xcode 15 beta中解决了。编译器条件现在在应用程序意图中工作。

相关问题