致命错误:@SceneStorage 仅用于 SwiftUI 应用程序生命周期。:文件 SwiftUI,第 0 行

Posted

技术标签:

【中文标题】致命错误:@SceneStorage 仅用于 SwiftUI 应用程序生命周期。:文件 SwiftUI,第 0 行【英文标题】:Fatal error: @SceneStorage is only for use with SwiftUI App Lifecycle.: file SwiftUI, line 0 【发布时间】:2020-07-03 11:18:46 【问题描述】:

我正在尝试使用 ios 14“SceneStorage”的新属性包装器,尽管它会产生此错误:

致命错误:@SceneStorage 仅适用于 SwiftUI 应用程序 Lifecycle.: 文件 SwiftUI,第 0 行

这是我的代码:

struct ContentView: View 
    @SceneStorage("isLoggedIn") var isLoggedIn = true
    
    var body: some View 
        Text("Hello, World!).onAppear 
            print($isLoggedIn)
        
    

已更新.... 谢谢,@Asperi!。 确保将 Life Cycle 设置为 SwiftUI App

【问题讨论】:

【参考方案1】:

适用于 Xcode 12 / iOS 14 / SwiftUI 生命周期

您的项目看起来使用 SwiftUI 1.0 AppDelegate/SceneDelegate(又名 UIKit 生命周期)

在 SwiftUI 生命周期中,您的应用主程序应该是这样的

@main
struct YourAppName: App 
    var body: some Scene 
        WindowGroup        // << this introduces Scene, needed for SceneStorage
            ContentView()
        
    

【讨论】:

谢谢。创建项目时,我将生命周期设置为 UIKit App Delegate。将其设置为 SwiftUI App 修复了它。

以上是关于致命错误:@SceneStorage 仅用于 SwiftUI 应用程序生命周期。:文件 SwiftUI,第 0 行的主要内容,如果未能解决你的问题,请参考以下文章

用于不安全地址更改的致命错误 Magento 后端

Swift 2 - hitTest 函数 - 发现致命错误 nil

在 Crashlytics 上记录非致命错误

使用致命错误刷新tableview时应用程序崩溃:索引超出范围Swift3

致命错误:允许的内存大小已用尽

PHP / SQL:成功更新数据行但出现PHP致命错误