我一直试图将这个问题弄清楚几天:(
下式给出:
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
声明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堆栈相同的问题。
谢谢!
答案 0 :(得分:0)
如果您遇到同样的问题,这可能会有所帮助,也可能不会对您有所帮助,但解决这个问题的原因是将我的Mac升级到优胜美地测试版,从XCode beta1升级到测试版。
我不能说这两件事中的哪一件做到了 - XCode最有意义,所以先尝试一下。
(在Mavericks上编辑部署目标以明确构建10.9并没有解决我的问题。)