当我尝试将一个简单的字符串保存到CoreData时遇到了这个问题。

'+entityForName: nil is not a legal NSManagedObjectContext parameter searching for entity name 'CurrentUser''


CoreData设置良好。我使用以下代码继续进行。

func saveName(name: String) {
        let appDelegate = UIApplication.shared.delegate as! AppDelegate
        let context: NSManagedObjectContext = appDelegate.persistentContainer.viewContext

        if context ==  nil {
            print("s")
        } else {
            print("d")
        }
        let entity = NSEntityDescription.insertNewObject(forEntityName: "CurrentUser", into: context)
        entity.setValue(name, forKey: "name")

        do {
            try context.save()
            print("saved")

        } catch {
            print("error")
        }
    }


致电:

saveName("Edwin")


这是我的项目中的代码,一直运行到昨天。我不知道刚才发生了什么。突然间,它开始显示我上面提到的错误。

我试图找到问题的事情:


如果我在模拟器上运行项目,则数据将保存(工作正常)。
在模拟器和设备中,在另一个项目中使用相同的代码都可以正常工作。
尝试删除以前的构建应用程序,然后再次运行。 (结果相同)


我发现的东西:


当我在设备上运行代码时,ManagedObject上下文为nil,但是当我在模拟器上运行它时,它不是nil(因此在模拟器上可以正常工作)。
仅当我从项目中运行代码时,ManagedObject Context才为零(如果我在另一个项目中运行代码,则在模拟器和设备中都可以正常工作)


帮我解决这个奇怪的问题。

我正在使用Xcode 9.4.1
斯威夫特:4.1

提前致谢。

最佳答案

这是核心数据面临的最常见问题。就我而言,我只是创建了数据模型并且它起作用了。感谢您在评论部分的讨论。

09-03 21:31