SwiftUI पूर्वावलोकन के साथ दुर्घटनाओं कोर डेटा 'NSInvalidArgumentException'

0

सवाल

मैं समस्या है कि मैं नहीं कर सकते हैं पूर्वावलोकन देखने के लिए अपने अनुप्रयोग के साथ कैनवास, क्योंकि मैं हमेशा त्रुटि मिलती है:

"समाप्त एप्लिकेशन के कारण uncaught अपवाद 'NSInvalidArgumentException' कारण: 'एक NSManagedObject वर्ग के 'App है । MPG_A' होना चाहिए एक मान्य NSEntityDescription."

अब, और अधिक विस्तृत: दृश्य में, मैं चाहता हूँ पूर्वावलोकन करने के लिए मैं एक @बाइंडिंग के अमूर्त वर्ग MultiplayerGame (MPG या MPG बी (उपवर्ग) और MultiplayerGame एक उपवर्ग के खेल (नीचे चित्र)

App Model

टिप्पणी: MultiplayerGame भी एक अमूर्त इकाई (जैसे खेल) और "वर्ग" -> "MPG बी"

और जब मैं चाहता हूँ करने के लिए पूर्वावलोकन वर्ग निम्न वर्ग बनाने के द्वारा एक moc वस्तु पूर्वावलोकन में मेरे App दुर्घटनाओं, लेकिन मैं क्यों नहीं पता है:

    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 नाम : स्ट्रिंग

मैं भी करने की कोशिश की के साथ 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 के एक+CoreDataClass" और संपत्ति?
ProgrammingAverage

सबसे अच्छा जवाब

0

क्योंकि मैंने कोशिश की है अन्य सभी संभावनाओं और कुछ भी नहीं मदद की है, मैं बनाया है एक नई परियोजना है और जाँच की CoreData.

फिर मैं बनाया के मुख्य वर्ग में CoreData फ़ाइल और प्रतिस्थापित Item के साथ Game में "ContentView".

में भी PersistenceController मैं बदल दिया Item के साथ Game के तहत var preview : PersistenceController बनाया गया है और सभी वर्गों के साथ codegen "Manual/None".

अब सब कुछ काम करता है.

2021-11-29 07:01:36

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में