project/개발 업무

(Xcode 15.0 beta) Preview Macro Bug

lgvv 2023. 6. 8. 12:06

(Xcode 15.0 beta) Preview Macro Bug

 

Bug Report

 

CompileDylibError: Failed to build ContentView.swift  
Compiling failed: main actor-isolated let 'previewContainer' can not be referenced from a non-isolated context

 

> Preview가 non-isolated context에 위채해서 MainActor가 아니라서 발생하는 문제.

 

Solution

1. MainActor로 가정해서 사용

#Preview {
    MainActor.assumeIsolated {
        ContentView()
            .frame(minWidth: 500, minHeight: 500)
            .modelContainer(previewContainer)
    }
}

 

2. 기존 형태로 사용

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
            .modelContainer(previewContainer)
    }
}

 

3. MainActor로 변경

#Preview { @MainActor in
    ContentView()
        .frame(minWidth: 500, minHeight: 500)
        .modelContainer(previewContainer)
}

 

 

 

 

[forum link]

https://developer.apple.com/forums/thread/731134 

 

Error after adding previewContaine… | Apple Developer Forums

I asked Chatgpt for this question, and it told me this: #Preview { MainActor.assumeIsolated { ContentView() .frame(minWidth: 500, minHeight: 500) .modelContainer(previewContainer) } } It worked.

developer.apple.com