Core Data NSEntityDescription.entityForName returns 无,但 managedObjectModel.entities 列出了实体
Core Data NSEntityDescription.entityForName returns nil, but managedObjectModel.entities lists the entities
我正在尝试在 swift 中创建 NSManagedObject 的子class。我在模型编辑器中创建了两个名为 Pages 和 Book 的实体,并生成了它们的 class 文件。这是两个 classes:
@objc(Pages)
class Pages: NSManagedObject {
@NSManaged var pageNo: NSNumber
}
@objc(Book)
class Book: NSManagedObject {
@NSManaged var pageCount: NSNumber
@NSManaged var title: String
@NSManaged var fetchLastPage: [Pages]
}
作为创建页面实例的测试,我在 ViewDidLoad 中编写了这段代码,但由于在模型中找不到实体而失败了:
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext!
var pages = NSEntityDescription.insertNewObjectForEntityForName("StoreTest.Pages", inManagedObjectContext: managedContext)
'StoreTest' 是我的应用程序的名称,它也在两个实体的模型编辑器中设置。为了查看发生了什么,我在创建实例之前添加了这段代码:
var pagesEntity = NSEntityDescription.entityForName("StoreTest.Pages", inManagedObjectContext: managedContext)
println("pagesEntity = \(pagesEntity)")
var ents = managedContext.persistentStoreCoordinator!.managedObjectModel.entities
println("entities = \(ents)")
NSEntityDescription.entityForName调用returnsnil,但调用managedObjectModel.entitiesreturns两个实体。
我确定没有拼写问题。此外,managedObject 不是零。我的数据模型文件的目标已正确设置为我的应用程序模块。
我正在使用 xCode 6.4。
感谢您的帮助!
从实体名称中删除额外的 StoreTest.
,那里不需要它,而且圆点可能会导致查找出现问题。
实际上可能只是你对实体名称是什么感到困惑,它在模型中设置,然后你设置 class 名称(通常与实体名称相同)。
我正在尝试在 swift 中创建 NSManagedObject 的子class。我在模型编辑器中创建了两个名为 Pages 和 Book 的实体,并生成了它们的 class 文件。这是两个 classes:
@objc(Pages)
class Pages: NSManagedObject {
@NSManaged var pageNo: NSNumber
}
@objc(Book)
class Book: NSManagedObject {
@NSManaged var pageCount: NSNumber
@NSManaged var title: String
@NSManaged var fetchLastPage: [Pages]
}
作为创建页面实例的测试,我在 ViewDidLoad 中编写了这段代码,但由于在模型中找不到实体而失败了:
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext!
var pages = NSEntityDescription.insertNewObjectForEntityForName("StoreTest.Pages", inManagedObjectContext: managedContext)
'StoreTest' 是我的应用程序的名称,它也在两个实体的模型编辑器中设置。为了查看发生了什么,我在创建实例之前添加了这段代码:
var pagesEntity = NSEntityDescription.entityForName("StoreTest.Pages", inManagedObjectContext: managedContext)
println("pagesEntity = \(pagesEntity)")
var ents = managedContext.persistentStoreCoordinator!.managedObjectModel.entities
println("entities = \(ents)")
NSEntityDescription.entityForName调用returnsnil,但调用managedObjectModel.entitiesreturns两个实体。
我确定没有拼写问题。此外,managedObject 不是零。我的数据模型文件的目标已正确设置为我的应用程序模块。
我正在使用 xCode 6.4。
感谢您的帮助!
从实体名称中删除额外的 StoreTest.
,那里不需要它,而且圆点可能会导致查找出现问题。
实际上可能只是你对实体名称是什么感到困惑,它在模型中设置,然后你设置 class 名称(通常与实体名称相同)。