当我尝试将一个简单的字符串保存到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
提前致谢。
最佳答案
这是核心数据面临的最常见问题。就我而言,我只是创建了数据模型并且它起作用了。感谢您在评论部分的讨论。