2

当我调用该方法时:

- (void)removeObjectFromMediaAtIndex:(NSUInteger)idx;

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

4

3 回答 3

7

确保您的 NSManagedObject 子类实例是使用 NSManagedObjectContext 而不是直接创建的。NSManagedObject sublcasses 不是利用@synthesize 作为属性,而是利用@dynamic 关键字,这表明访问器将在运行时创建 - 在这种情况下,由 NSManagedObjectContext 创建。如果您使用诸如 alloc]init] 之类的东西创建对象实例,它们将不存在;

于 2012-04-15T02:15:27.310 回答
2

这是一个臭名昭著的核心数据错误。它快 2 岁了,但遗憾的是它仍然存在。请参阅这篇文章:NSOrderedSet 生成的访问器中引发的异常

于 2013-06-02T15:13:51.943 回答
0

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

但是,这看起来不像是默认方法。我习惯于看到的默认方法是添加对象、删除对象、更改为新的 NSSet,以及另外一种我无法完全记住的方法。但是,如果您让 CoreData 对象使用 NSArray 来代替,那将是有意义的。

于 2012-04-15T02:16:23.020 回答