insertDataforTableName返回错误的对象类型

时间:2015-10-07 17:53:54

标签: objective-c core-data

我正在我的应用程序中构建一些新功能,这实际上只是为新类类型复制的旧代码。在它创建和显示车辆之前,现在它正在创建和显示书籍,但它的表现并不像预期的那样。

我想保留数据,所以这里是创建一个新的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实体定义的某些问题。

1 个答案:

答案 0 :(得分:0)

Rob Mayoff的问题是正确的:

  

数据模型中“MyBook”实体的定义是否将“MyBook”指定为其类?

因为在这种情况下它没有。如果您想在数据模型中创建新实体,请确保在右侧工具栏中指定与其关联的实际类。如果你问我,很容易错过这一步。