向 Core Data 添加数据时出现问题 - nil 不是合法参数

Posted

技术标签:

【中文标题】向 Core Data 添加数据时出现问题 - nil 不是合法参数【英文标题】:Problem while adding Data to Core Data - nil is not a legal parameter 【发布时间】:2018-09-08 15:57:01 【问题描述】:

我收到此错误:

2018-09-08 17:53:36.795035+0200 电影轮盘[826:263749] [错误] 错误:无法加载名为 ett CoreData 的模型:错误:无法加载 加载名为 ett 2018-09-08 17:53:36.796536+0200 电影的模型 APP[826:263749] *** 由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'+entityForName:nil 不是 搜索实体名称的合法 NSManagedObjectContext 参数 '电影数据''

也许你们中的一些人可以帮助我解决这个问题。我已经搜索并阅读了我必须创建一个 NSManagedObjectContext。我已经在我的 func 中创建了它,但我仍然收到此错误。

func save(name: String) 
    guard let appDelegate =
        UIApplication.shared.delegate as? AppDelegate else 
            return
    

    // 1
    let managedContext =
        appDelegate.persistentContainer.viewContext
    // 2
    let entity =
        NSEntityDescription.entity(forEntityName: "MovieData",
                                   in: managedContext)!

    let MovieDT = NSManagedObject(entity: entity,
                                  insertInto: managedContext)

    // 3
    MovieDT.setValue(name, forKeyPath: "titel")

    // 4
    do 
        try managedContext.save()
        movieArray.append(MovieDT)
     catch let error as NSError 
        print("Could not save. \(error), \(error.userInfo)")
    

【问题讨论】:

不相关但从不guardAppDelegate。强行拆开它。如果AppDelegate 丢失,您的应用甚至不会到达这条线。 【参考方案1】:

这个问题只有在模型名称改变时才会发生,这里是AppDelegate

let container = NSPersistentcontainer(name:"thisMayChanged")
container.loadPersistentStores......

崩溃时很清楚

CoreData:错误:无法加载名为 ett

的模型

项目名称为Movie APP

电影APP[826:263749]

您将原始名称更改为 ett,默认情况下应为 Movie_APP

【讨论】:

确定名为 MovieData 的实体包含 title ?? 感谢您的帮助。我已经解决了这个问题。有时我应该只阅读1次以上的错误:-D

以上是关于向 Core Data 添加数据时出现问题 - nil 不是合法参数的主要内容,如果未能解决你的问题,请参考以下文章

尝试将服务器内容同步到 Core Data 时出现问题 - Magical Record 插入过程非常慢

发送到已释放实例 Core Data 的消息

尝试对 ASP.NET Core 3.1 使用多个身份验证方案时出现异常

将可转换的 NSAttributedString 保存到 Core Data 时出现异常奇怪的崩溃

向sqlite添加数据时出现java.lang.NullPointerException(因为RadioGroup)[重复]

在 iOS 中对来自 Core Data 的实体的 NSArray 进行快速枚举时出现运行时错误