在观看 WWDC 21 视频参考 StoreKit 2 时,他们引用了一些函数,其中他们让值 =WindowScene如下:
func manageSubscriptions() async {
if let windowScene = self.view.window?.windowScene {
do {
try await AppStore.showManageSubscriptions(in: windowScene)
} catch {
//error
}
}
}
Run Code Online (Sandbox Code Playgroud)
let 行出错并显示以下消息:Type of expression is ambiguous without more context
如果我尝试提供更多上下文,例如:
if let windowScene = (self.view.window?.windowScene)! as UIWindowScene {
Run Code Online (Sandbox Code Playgroud)
有人告诉我:Value of type 'MyStruct' has no member 'view'
我缺少什么,必须是简单的东西才能访问这个所需的 UI 元素?
谢谢
补充: 我想补充一点,我使用的是使用 SceneDelegate 和 AppDelegate 创建的 SwiftUI 应用程序,而不是简单的结构:App,结构类型。所以我猜我需要访问 SceneDelegate 中的某些内容才能获取正确的对象。
只是为了给感兴趣的人提供一个答案,感谢 @aheze 找到了它,并感谢 @Matteo Pacini 提供了解决方案,让这个特定的方法在使用具有 AppDelegate/SceneDelegate 结构的 SwiftUI 应用程序时起作用,这将起作用:
@MainActor
func manageSubscriptions() async {
if let windowScene = UIApplication.shared.connectedScenes.first {
do {
try await AppStore.showManageSubscriptions(in: windowScene as! UIWindowScene)
} catch {
//error
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4068 次 |
| 最近记录: |