web-dev-qa-db-fra.com

Comment convertir du cycle de vie Uikit en cycle de vie SWIFTUI dans iOS 14 (xcode 12 bêta)

Je travaille actuellement sur l'application SwiftUI dans laquelle j'utilise SceneDelegate et AppDelegate. Je voudrais savoir comment je peux convertir le cycle de vie de UIKit à SwiftUI _ un où il y a un App struct et avec scenes etc.

De plus, j'aimerais savoir s'occuper de Coredata et de persisterscontaineries et de les injecter dans nos environnements.

Aussi, j'ai utilisé UIApplicationDelegateAdapter _ pour injecter AppDelegate _ mais le @main Me donne une erreur

'Main ()' n'est disponible que dans iOS 14.0 ou plus récent

J'utilise @available (iOS 14.0, *) au début:

import SwiftUI

@available(iOS 14.0, *)
@main

struct MyApp: App {

    @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
    
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

Le faire comme ça, où est le code SceneDelegate va. Je suis toujours assez confus comment va cette conversion. Je n'ai pas vu Apple en parlant de cela dans leurs sessions ou quoi que ce soit. L'aide sera vraiment appréciée.

8
Osama Naeem

où va le code Screedelegate.

@available(iOS 14.0, *)
@main
struct MyApp: App {

    @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext

    @Environment(\.scenePhase) private var scenePhase

    var body: some Scene {
        WindowGroup {         // << this is a scene
          ContentView()
            .onChange(of: scenePhase) { phase in
              switch phase {
                case .active:
                    print(">> your code is here on scene become active")
                case .inactive:
                    print(">> your code is here on become inactive")
                case .background:
                    print(">> your code is here on go in background")
                default:
                    print(">> do something else in future")
             }
          }
        }
    }
}
2
Asperi