OSX CoreData:仅针对某些实体的问题:+ entityForName:无法在此模型中找到名为“myEntity”的实体

时间:2014-07-10 12:27:52

标签: macos core-data swift

我一直试图将这个问题弄清楚几天:(

下式给出:

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.

  • println(&#34;(context)&#34;)显示<NSManagedObjectContext: 0x6080001dfd10>
  • 我三倍检查名称是否与模型匹配 Tello.xcdatamodelId
  • 设置断点显示崩溃发生在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 个答案:

答案 0 :(得分:0)

如果您遇到同样的问题,这可能会有所帮助,也可能不会对您有所帮助,但解决这个问题的原因是将我的Mac升级到优胜美地测试版,从XCode beta1升级到测试版。

我不能说这两件事中的哪一件做到了 - XCode最有意义,所以先尝试一下。

(在Mavericks上编辑部署目标以明确构建10.9并没有解决我的问题。)