【发布时间】:2014-08-09 18:25:51
【问题描述】:
Core Data 有一个奇怪的问题...
我有一个模型,我将其他几个 NSManagedObjects 设置为另一个 NSManagedObject(To One 关系)的一部分。它在模拟器中运行良好,但是当我在设备上测试时它崩溃了,给我这个错误:
2014-08-10 03:14:13.292 Prologue[4099:60b] * 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“+entityForName:无法在此找到名为“BookContents”的实体模型。' * 首先抛出调用栈: (0x184ad3100 0x1914b01fc 0x1847f2f84 0x1000794ec 0x10007846c 0x100068250 0x10006adf0 0x10006ae54 0x187ad10b0 0x187ad1044 0x187aba520 0x187ad0a44 0x187ad06d8 0x187acb370 0x187a9cb50 0x187a9ac40 0x184a937f4 0x184a92b50 0x184a90de8 0x1849d1dd0 0x18a671c0c 0x187b02fc4 0x100072fd4 0x100073014 0x191aa3aa0) libc++abi.dylib:以 NSException 类型的未捕获异常终止
BookContents 是一个与我的主要数据模型对象 Book 相关的模型。这是创建它的代码:
func createBookModel() -> Book
{
var book:Book = createFromEntity("Book") as Book;
if (book != nil)
{
book.title = "New Book";
book.bookContents = createFromEntity("BookContents") as BookContents;
saveContext();
}
else
{
Log.error("Failed to create Book.");
}
return book;
}
func createFromEntity(entityName:String) -> NSManagedObject
{
var obj:NSManagedObject = NSEntityDescription.insertNewObjectForEntityForName(entityName, inManagedObjectContext: moc) as NSManagedObject;
return obj;
}
我不确定这里出了什么问题,但由于它在 emu 上运行而不是在设备上运行,因此可能是其他问题(可能与数据模型文件有关?)。但是实体命名在任何地方都是正确的,我在数据模型中的实体类前面加上项目的模块名称。
【问题讨论】:
-
自从您将应用程序放到您的设备上后,您是否更改了您的模型?
标签: ios cocoa-touch core-data swift