iOS-ManagedObjectContext在快速CoreData中为零

时间:2018-09-13 08:04:46

标签: ios swift core-data nsmanagedobjectcontext

当我尝试将一个简单的字符串保存到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")

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

我试图找到问题的地方:

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

我发现的东西

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

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

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

谢谢。

1 个答案:

答案 0 :(得分:0)

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