iOS - ManagedObjectContext在swift CoreData中为零

问题描述 投票:0回答:1

当我试图将一个简单的字符串保存到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 Swift:4.1

提前致谢。

ios swift core-data nsmanagedobjectcontext
1个回答
0
投票

这是Core Data面临的最常见问题。在我的例子中,我刚刚创建了数据模型并且它有效。感谢评论部分的讨论。

© www.soinside.com 2019 - 2024. All rights reserved.