【发布时间】:2016-06-19 16:27:15
【问题描述】:
新的entity() 方法帮助我们避免使用魔法字符串。与其说managedObjectModel.entitiesByName["foo"],不如说Foo.entity()。
问题是在我的测试中它总是抛出EXC_BAD_ACCESS。我已经配置了我的 NSPersistentStore 并运行了一个测试查询以确保一切设置正确。
有什么见解吗?调用此方法的先决条件是什么?
【问题讨论】:
新的entity() 方法帮助我们避免使用魔法字符串。与其说managedObjectModel.entitiesByName["foo"],不如说Foo.entity()。
问题是在我的测试中它总是抛出EXC_BAD_ACCESS。我已经配置了我的 NSPersistentStore 并运行了一个测试查询以确保一切设置正确。
有什么见解吗?调用此方法的先决条件是什么?
【问题讨论】:
您的设置有问题。
要检查,打开 Xcode,启动一个新项目,选择“Master/Detail”,检查“Core Data”。在MasterViewController 中,在任意位置插入这一行:
print("The entity is ", Event.entity(), ".")
您会看到它开箱即用。请注意,在模型编辑器中,当检查Event 实体时,选项“Codegen”设置为“Class Definition”。
【讨论】:
问题原来是仅仅初始化NSPersistentStore 并调用loadPersistentStores 是不够的。您必须至少显式或隐式使用其managedObjectModel 属性一次,这很可能是由于延迟加载。
我暂时认为这是一个错误。 entity() 方法可能应该在后台自行执行此操作,但可能还有其他考虑因素。
【讨论】: