Core Data save() 调用了无法识别的选择器“count”

问题描述 投票:0回答:1

我在核心数据中调用

save()
时遇到“[CDIRunningDuration count]:无法识别的选择器发送到实例0x600001a0fed0”错误。模型很简单,我也不知道为什么。

private func runTest() {
        let session = CDISession(context: moc)
        session.startDate = Date()
        
        let app = NSWorkspace.shared.frontmostApplication!
        let runningApp = CDIApp(context: moc)
        runningApp.bundleURL = app.bundleURL
        
        let runningDuration = CDIRunningDuration(context: moc)
        runningDuration.app = runningApp
        runningDuration.timelength = 100.0
        runningDuration.session = session
        
        try! moc.save()
    }

完整示例在这里。 下载

---更多代码---

import SwiftUI
import CoreData

struct ContentView: View {
    @Environment(\.managedObjectContext) private var moc
    
    var body: some View {
        VStack(alignment: .leading) {
            Text("Hello World!")
        }
        .padding()
        .onAppear(perform: runTest)
    }
    
    private func runTest() {
        let session = CDISession(context: moc)
        session.startDate = Date()
        
        let app = NSWorkspace.shared.frontmostApplication!
        let runningApp = CDIApp(context: moc)
        runningApp.bundleURL = app.bundleURL
        
        let runningDuration = CDIRunningDuration(context: moc)
        runningDuration.app = runningApp
        runningDuration.timelength = 100.0
        runningDuration.session = session
        
        try! moc.save()
    }
}

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

import SwiftUI

@main
struct Core_Data_IssueApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
                .environment(\.managedObjectContext, ModelProvider.shared.container.viewContext)
        }
    }
}
import Foundation
import CoreData
import AppKit

class ModelProvider:ObservableObject {
    let container = NSPersistentContainer(name: "Model")
    
    private init() {
        container.loadPersistentStores { description, error in
            if let error = error {
                let alert = NSAlert(error: error)
                NSSound.beep()
                alert.runModal()
            }
        }
    }
    
    static let shared = ModelProvider()
}
core-data
1个回答
0
投票

您的示例中的问题似乎是由关系runningDurations <> app引起的,它在两个方向上都定义为

To One
,这可能不是您想要的。通过将关系 runningDuration > app 更改为
To Many
错误消失并且数据被保存在数据库中。

© www.soinside.com 2019 - 2024. All rights reserved.