SwiftUI 미리보기와 충돌 핵심 데이터'NSInvalidArgumentException'

0

질문

나는 문제할 수 없는 미리 보기 내 응용 프로그램 캔버스,기 때문에 나는 항상 오차:

"종료용으로 인해 처리되지 않은 예외 'NSInvalidArgumentException',이유:'는 NSManagedObject 의 클래스 '응용 프로그램을 만들었습니다.MPG_A'고 있어야 합니다 NSEntityDescription."

더 자세한 지금:에서 보고 싶은 내가 미리보기 있@바인딩의 추상 클래스 MultiplayerGame(MPG 또는 MPG B(하위)및 MultiplayerGame 은 서브 클래스의 게임(아래 그림)

App Model

명:MultiplayerGame 또한 추상적인 엔터티(게임을 좋아)그리고"Class"->"MPG B"

고 싶을 때 미리보기를 클래스는 다음과 같은 클래스에 의해 만들 moc 체에서 미리 보기 내용을 충돌 그러나 나는 이유를 모르겠:

    import SwiftUI
import CoreData
import Combine

struct StandingEditView: View {
    
    //multiplayer game with MPG A or MPG B class
    @Binding var game : MultiplayerGame
    
    @State private var invokeFunction : Bool = false
    
    var body: some View {
        
        VStack{
            
            List{
                
                ForEach(game.players!, id: \.self){ player in
                    
                    HStack{
                        Text("\(player.name)")
                    }
                    
                }
                
            }
            
            Button(action: {
                invokeFunction.toggle()
            }, label: {
                Text("Button")
            })
            
        }
        
    }
}

struct StandingEditView_Previews: PreviewProvider {
    
    static let moc = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType)
    
    static var previews: some View {
        
        let game : MultiplayerGame = Standing(context: moc)
        
        let p1 : Player = Player(context: moc)
        let p2 : Player = Player(context: moc)
        let p3 : Player = Player(context: moc)
        
        p1.name =  "Player One"
        p2.name =  "Player Two"
        p3.name =  "Player Three"
        
        game.players = [p1,p2,p3]
        
        return StandingEditView(game: .constant(game))
    }
}

고(기본값)속의 선수 이다-> var name:String

리스도와 함께 AppDelegate 지만 작동 하지 않았습니다.

오류가 발생해야 하기 때문에 미리보기 및 moc-체이기 때문에 코드를 컴파일하고 다른 전망은 보이지 않고 오류가 있습니다.

당신의 도움을 주셔서 감사합니다!

core-data preview swift swiftui
2021-11-24 01:22:48
2
0

을 설정해야 합 스택한다. 이 NSManagedObjectContext 이 알고 있어야의 모델입니다.

다음 StackBuilder 클래스에 제공 temporary 버전에 적합합니다

private final class StackBuilder {
    
    private let modelName = "Model" // must match your model filename
    
    public enum Configuration {
        case temporary
        case permanent
    }
    
    let configuration: Configuration
    
    public init(_ configuration: Configuration = .permanent) {
        self.configuration = configuration
    }
    
    public func load() throws -> NSPersistentContainer {
        var errors = [Error]()
        let persistentContainer = NSPersistentContainer(name: modelName)
        persistentContainer.persistentStoreDescriptions = [description(for: configuration)]
        persistentContainer.loadPersistentStores { (value, error) in
            if error != nil {
                errors.append(error!)
            }
        }
        if errors.count > 0 {
            throw errors.first!
        }
        return persistentContainer as NSPersistentContainer
    }
    
    private func description(for configuration: Configuration) -> NSPersistentStoreDescription {
        let desc = NSPersistentStoreDescription(url: NSPersistentContainer.defaultDirectoryURL())
        switch configuration {
        case .temporary:
            desc.type = NSInMemoryStoreType
        case .permanent:
            desc.shouldInferMappingModelAutomatically = true
            desc.shouldMigrateStoreAutomatically = true
            desc.type = NSSQLiteStoreType
        }
        return desc
    }
}

하는 데 필요할 수 있습 함께 전달의 컨텍스트 환경을 개체입니다.

static var previews: some View {
    return StandingEditView(game: .constant(game))
            .environment(\.managedObjectContext, moc)
}
2021-11-24 06:05:30

나는 전화 StackBuilder 클래스입니까? 같은 오류"NSInvalidArgumentException"나타납니다-하지만 프로젝트가 제대로 구축하고 다른 뷰를 표시
ProgrammingAverage

와 나를 위한 모델의 이름처럼"MPG 는"또는"MPG A+CoreDataClass"및설턴트를 제공합니다.
ProgrammingAverage

최고의 응답

0

이후 나가려고 다른 모든 가능성과 도움 없다,나는 새로운 프로젝트 및 체크 CoreData.

그때 만든 주요 클래스 CoreData 파일 교체 ItemGame"ContentView".

PersistenceController 나는 대체 ItemGamevar preview : PersistenceController 고 만들어진 모든 클래스 코드 생성 "Manual/None".

이 모든 작동합니다.

2021-11-29 07:01:36

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................