核心数据有一个奇怪的问题...
我有一个模型,其中我将其他几个NSManagedObjects设置为另一个NSManagedObject(一对一关系)的一部分。它在仿真器中运行良好,但是当我在设备上进行测试时,它崩溃了,并给了我这个错误:
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上而不是在设备上运行,因此可能是其他问题(例如数据模型文件?)。但是,实体命名在任何地方都是正确的,我在数据模型中的实体类前面加上了项目的模块名称。
我找出了问题所在:数据模型文件已损坏。我已经删除了旧的文件,并从头开始重新创建它,并且听到了,它现在可以工作了。当我设置一个新项目并将其复制到文件上时,肯定已经发生了,因为我在两者之间重命名了该项目。因此,复制数据模型文件显然会使它搞砸了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句