Настройка зависимостей и предварительная подготовка приложения в SwiftUI 2.0 - PullRequest
1 голос
/ 04 августа 2020

Поскольку SwiftUI 2.0 больше не имеет AppDelegate, мне было интересно, где я должен подготовить, например, мой DependencyManager (<- is stati c)? </p>

Раньше я настраивал его в AppDelegates didFinishLaunchingWithOptions как:

DependencyManager.set(dependency: DummyClass())

Я думал, что это нужно сделать в @main struct ...: App сейчас, но DependencyManager там неизвестно, а в самом Scene это приводит к следующей ошибке :

Тип '()' не может соответствовать 'Scene'; только типы struct / enum / class могут соответствовать протоколам

1 Ответ

1 голос
/ 04 августа 2020

Вы можете это сделать

@main
struct Demo_SwiftUI2App1: App {

    init() {
        DependencyManager.set(dependency: DummyClass())    // << here !!
    }

    var body: some Scene {
      // ... other code here

или

class AppDelegate: NSObject, UIApplicationDelegate {
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {

        DependencyManager.set(dependency: DummyClass()) // << here !!
        return true
    }
}

@main
struct Demo_SwiftUI2App2: App {
    @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate

    var body: some Scene {
       // ... other code here

на всякий случай первый вариант вызывается перед вторым.

...