ios - 我想保存到核心数据,但我不断收到 'An NSManagedObject of class ' 提醒“必须有有效的 NSEntityDescription”。

标签 ios swift xcode core-data

我做错了什么?

这就是我要保存的内容:

//To save in Core Data
let my_reminder = Reminder(context: CoreDataService.context)
my_reminder.name = "a title"
my_reminder.date = "a date"
my_reminder.content = "some text"
CoreDataService.saveContext() //a class that handles core data

这是我的 CoreDataService 类:

import Foundation
import CoreData

class CoreDataService {
    
    static var context: NSManagedObjectContext {
        return persistentContainer.viewContext
    }
    
    private init(){}
    
    // MARK: - Core Data stack
    static var persistentContainer: NSPersistentContainer = {
        let container = NSPersistentContainer(name: "project_name")
        container.loadPersistentStores(completionHandler: { (storeDescription, error) in
            if let error = error as NSError? {
                fatalError("Unresolved error \(error), \(error.userInfo)")
            }
        })
        return container
    }()
    
    // MARK: - Core Data Saving support
    static func saveContext () {
        let context = persistentContainer.viewContext
        if context.hasChanges {
            do {
                try context.save()
            } catch {
                let nserror = error as NSError
                fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
            }
        }
    }
    
}

错误消息:

An NSManagedObject of class 'Reminder' must have a valid NSEntityDescription.

我一次又一次地收到错误,我需要更新plist吗?我检查了所有内容,但似乎仍然不起作用

(顺便说一句,我正在使用 Swift 4XCODE 9)。

最佳答案

抱歉,我不记得用户名了,但有人建议我更改行:

let my_reminder = Reminder(context: CoreDataService.context)

类似:

if let my_reminder = NSEntityDescription.insertNewObject(forEntityName: "Reminder", into: CoreDataService.context) as? Reminder {
            print("Start saving")
            my_reminder.name = "a title"
            my_reminder.date = "a date"
            my_reminder.content = "some text"
            CoreDataService.saveContext()
        }

另外,我的 CoreDataService 类中出现了问题,NSPercientContainer 没有收到项目的名称,而是收到 XCDataModeld 文件的名称,这往往是相同的,但在我的情况下不是:

let container = NSPersistentContainer(name: "Model")

关于ios - 我想保存到核心数据,但我不断收到 'An NSManagedObject of class ' 提醒“必须有有效的 NSEntityDescription”。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50279777/

相关文章:

swift - 如何让这个函数快速工作

swift - 如果信号已经发生,如何观察信号并立即接收到 `next` 事件?

ios - 给定一个实时流的深层链接,我如何在我的 iOS 应用程序中显示这个实时流?

xcode - 如何设置 Xcode Organizer 以使用 x86_64 二进制文件运行?

objective-c - 如何将数据从 TextField/TextView 发送到另一个 View ?

ios - 更改 UIVisualEffectView 的效果

xcode - 如何使用 xcode 3.2.5 将应用程序提交到 mac 应用程序商店

objective-c - 我如何检查 Xcode 4 中的程序集?

ios - 今天在有限设备上扩展 "Unable to Load"

android - 什么是适用于 Android 的 SceneKit?