OSX CoreData:仅针对某些实体的问题:+entityForName:在此模型中找不到名为“myEntity”的实体
Posted
技术标签:
【中文标题】OSX CoreData:仅针对某些实体的问题:+entityForName:在此模型中找不到名为“myEntity”的实体【英文标题】:OSX CoreData: issue only for some entities: +entityForName: could not locate an entity named 'myEntity' in this model 【发布时间】:2014-07-10 12:27:51 【问题描述】:这几天我一直在努力解决这个问题:(
给定:
println("\(context)")
if context == nil
println("context is nil")
let boardEntity: NSManagedObject = NSEntityDescription.insertNewObjectForEntityForName("Board", inManagedObjectContext: context) as NSManagedObject
let cardQueueEntity: NSManagedObject = NSEntityDescription.insertNewObjectForEntityForName("CardQueue", inManagedObjectContext: context) as NSManagedObject
boardEntity 保存良好。我什至直接在sql文件中验证了这一点。
cardQueueEntity 产生以下错误:
+entityForName: could not locate an entity named 'CardQueue' in this model.
<NSManagedObjectContext: 0x6080001dfd10>
我已经检查了三倍的名称是否与模型匹配
设置断点表明崩溃发生在 cardQueueEntity
声明处
我查看了 sql 文件以验证实体名称是否也相同
我已经手动删除了我的 sqllite 文件(在 /library/containers/..)来强制重建数据库,但结果是一样的
我参考了+entityForName: could not locate an entity named 'Dogs' in this model. 和其他人,但找不到解决方案
如果我注释掉板或更改顺序,板仍然有效,而 cardQueue 不可用。
println("\(context.persistentStoreCoordinator.managedObjectModel.entitiesByName)")
显示所有实体。
这是我正在使用的核心数据堆栈(基于http://www.cimgf.com/2014/06/08/the-core-data-stack-in-swift),
@lazy var context: NSManagedObjectContext =
let modelURL = NSBundle.mainBundle().URLForResource("Tello", withExtension: "momd")
let mom = NSManagedObjectModel(contentsOfURL: modelURL)
let psc = NSPersistentStoreCoordinator(managedObjectModel: mom)
let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
let storeURL = (urls[urls.endIndex-1]).URLByAppendingPathComponent("Tello.sqlite")
var error: NSError? = nil
var store = psc.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: storeURL, options: nil, error: &error)
if (store == nil)
println("Failed to load store")
var managedObjectContext = NSManagedObjectContext()
managedObjectContext.persistentStoreCoordinator = psc
return managedObjectContext
()
但我也遇到了与默认 Apple 堆栈相同的问题。
谢谢!!
【问题讨论】:
【参考方案1】:如果您遇到同样的问题,这可能对您有帮助,也可能无济于事,但为我解决的问题是将我的 mac 升级到 Yosemite beta 并从 XCode beta1 升级到 beta3。
我不能说这两件事中哪一个做到了 - XCode 最有意义,所以先试试吧。
(在 Mavericks 编辑部署目标以明确构建 10.9 并没有解决我的问题。)
【讨论】:
以上是关于OSX CoreData:仅针对某些实体的问题:+entityForName:在此模型中找不到名为“myEntity”的实体的主要内容,如果未能解决你的问题,请参考以下文章
CoreData:NSManagedObject 不响应用户定义的消息