gpt4 book ai didi

ios - Swift 3 核心数据 NSInternalInconsistencyException entityForName 在此模型中找不到名为 Foo 的实体

转载 作者:行者123 更新时间:2023-11-28 15:36:01 33 4
gpt4 key购买 nike

我有一个框架项目,当我尝试对我的类进行单元测试时遇到了那个奇怪的错误。这是 Andrew Bancroft 建议的代码进入内存NSManagedObjectContext

func setUpInMemoryManagedObjectContext() -> NSManagedObjectContext {
let managedObjectModel = NSManagedObjectModel.mergedModel(from: [Bundle.main])!
let persistentStoreCoordinator = NSPersistentStoreCoordinator(managedObjectModel: managedObjectModel)

do {
try persistentStoreCoordinator.addPersistentStore(ofType: NSInMemoryStoreType, configurationName: nil, at: nil, options: nil)
} catch {
print("Adding in-memory persistent store failed")
}

let managedObjectContext = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType)
managedObjectContext.persistentStoreCoordinator = persistentStoreCoordinator

return managedObjectContext
}

但是每当我尝试通过这段代码插入一个对象(或任何其他数据库操作)

 let newLocationMO = NSEntityDescription.insertNewObject(forEntityName: table, into: context) as! LocationMO

它因标题中提到的错误而崩溃。

我也尝试用真实的上下文进行测试,所以我将我的框架导入一个临时项目并从 AppDelegate 自动生成的代码中获取上下文,但它崩溃并出现相同的错误,就好像它没有看到我的 .xcdatamodeld 定义。

注意:我检查了所有拼写错误,没有文件丢失。

也许在框架项目中不允许有核心数据?非常感谢框架项目中核心数据使用的任何链接或示例。

最佳答案

您可以在框架中使用 Core Data,但您需要确保您的代码知道它在框架中。最可能的问题是这一行:

let managedObjectModel = NSManagedObjectModel.mergedModel(from: [Bundle.main])!

如果您在框架中,则您的模型不在主包中。你告诉它在错误的地方查找,所以它没有找到模型文件。

您可能想将其更改为 Bundle(for: type(of:self)) 以便您将在包含框架类的同一个包中查找。

关于ios - Swift 3 核心数据 NSInternalInconsistencyException entityForName 在此模型中找不到名为 Foo 的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44268496/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com