我正在我的应用程序中构建一些新功能,这实际上只是为新类类型复制的旧代码。在它创建和显示车辆之前,现在它正在创建和显示书籍,但它的表现并不像预期的那样。
我想保留数据,所以这里是创建一个新的ManagedObject的代码,它应该返回一个指向该对象的指针:
vehicle = [[MyCoreDataManager sharedManager] insertDataforTableName:@"MyVehicle"];
这一行返回MyVehicle
类型的对象,这就是我想要的。 MyVehicle
是一个继承自NSManagedObject
的类,它有自己的方法,在插入后立即使用。
现在我希望具有相同的确切排列,除了MyBook
对象。但是,当我跑:
book = [[MyCoreDataManager sharedManager] insertDataforTableName:@"MyBook"];
上面一行代码返回NSManagedObject
类型的对象,错误,因为我无法访问MyBook
方法,因为它是NSManagedObject
而不是MyBook
。我甚至尝试过类型铸造,但它不起作用。它是NSManagedObject
而不是MyBook
的事实导致我的应用程序因unrecognized selector sent to instance
异常而崩溃,因为我试图在运行时调用对象无法识别的方法。感谢您的想法。
我对这个问题的理解是,某个MyBook
类没有正确声明,或者在.h或.m文件中有一些微妙的问题导致它在运行时没有链接。或.xcdatamodeld实体定义的某些问题。
答案 0 :(得分:0)
Rob Mayoff的问题是正确的:
数据模型中“MyBook”实体的定义是否将“MyBook”指定为其类?
因为在这种情况下它没有。如果您想在数据模型中创建新实体,请确保在右侧工具栏中指定与其关联的实际类。如果你问我,很容易错过这一步。