CoreDataGeneratedAccessor方法给出“无法识别的选择器发送到实例”错误

时间:2012-04-15 01:36:59

标签: iphone objective-c ios core-data

当我打电话给方法时:

- (void)removeObjectFromMediaAtIndex:(NSUInteger)idx;

这是作为核心数据对象创建的文件中的默认方法之一,我收到unrecognized selector sent to instance的错误。有人知道为什么会这样吗?

3 个答案:

答案 0 :(得分:7)

确保NSManagedObject sublcass实例是使用NSManagedObjectContext创建的,而不是直接创建的。 NSManagedObject子库不是利用@synthesize来获取属性,而是利用@dynamic关键字指示将在运行时创建访问器 - 在本例中,由NSManagedObjectContext创建。如果使用alloc] init];

之类的东西创建对象实例,它们就不会存在

答案 1 :(得分:2)

这是一个臭名昭着的核心数据错误。它差不多有两年了,但遗憾的是它仍然存在。请参阅此帖子:Exception thrown in NSOrderedSet generated accessors

答案 2 :(得分:0)

听起来您可能在不更改类的情况下更改了数据模型,反之亦然。或者也许你的一个团队成员做了(我的团队很快就知道了这个危险)。另一种可能性是你使用的引用实际上并不是你认为的类。有时如果你过度发布一个对象,另一个对象将占用前面的内存空间,但它不是正确的类。

但是,这看起来不像是默认方法。我以前看到的默认方法是添加对象,删除对象,更改为新的NSSet,还有一个我无法记住的最重要的方法。但是,如果你让CoreData对象使用NSArray,那么它就有意义了。