I'm working with DataScannerViewController to give the user the ability to recognize text using the camera.

I created a template to manage camera permissions.

I uses @Observable macro and I need to use it on the main tread also using @MainActor macro

Now the problem is that the compiler gives me an error:

Call to main actor-isolated initializer 'init()' in a synchronous nonisolated context

at this line @State private var scannerViewModel = ScannerViewModel()

How can this problem be solved?

It seems that @MainActor conflicts with @Observable

This is the code


import Foundation
import VisionKit

enum ScannerStatus {
    case notDeterminated, denied, cameraNotAvailable, scannerNotAvailable, available
}

@MainActor
@Observable
final class ScannerViewModel {
    var accessStatus: ScannerStatus = .notDeterminated
    var scannerAvailable: Bool {
            DataScannerViewController.isSupported &&
            DataScannerViewController.isAvailable
        }
}


@main
struct FindTextFromImageApp: App {

@State private var scannerViewModel = ScannerViewModel() // Call to main actor-isolated initializer 'init()' in a synchronous  nonisolated context

var body: some Scene {
    WindowGroup {
        Start()
            .environment(scannerViewModel)
    }
}

}

0

There are 0 best solutions below