Objective c CoreData-按实体的ObjectID检索实体时无法识别的选择器
我正在开发一个应用程序,它使用多个线程进行一些密集的计算,并获取大量数据。因此,在使用Objective c CoreData-按实体的ObjectID检索实体时无法识别的选择器,objective-c,core-data,Objective C,Core Data,我正在开发一个应用程序,它使用多个线程进行一些密集的计算,并获取大量数据。因此,在使用CoreData设计我的应用程序时,我试图成为一名优秀的小开发人员,并遵循以下原则。基本上,我有一个运行和获取数据的NSOperation。它(向主线程中的一个方法)返回一个NSMutableSet,其中包含每个返回实体的NSManagedObjectID 下面是主线程中的方法,我想再次将那些NSManagedObjects转换为实际的NSManagedObject子类: -(void)updateLocalC
CoreData
设计我的应用程序时,我试图成为一名优秀的小开发人员,并遵循以下原则。基本上,我有一个运行和获取数据的NSOperation
。它(向主线程中的一个方法)返回一个NSMutableSet
,其中包含每个返回实体的NSManagedObjectID
下面是主线程中的方法,我想再次将那些NSManagedObject
s转换为实际的NSManagedObject
子类:
-(void)updateLocalContextWithObjectIDs:(NSMutableSet *)idSet {
NSMutableSet *entitySet = [[NSMutableSet alloc] init];
for (NSManagedObjectID *objectID in idSet) {
[entitySet addObject: (Person *)[[self.dataProvider sharedManagedObjectContext] objectWithID:objectID]];
}
self.entitySet = entitySet;
[entitySet release];
}
我遇到的问题是,当此循环运行时,我遇到以下错误:
-[Person persistentStore]: unrecognized selector sent to instance 0x619b270
知道为什么会这样吗?调用Person
对象上的persistentStore
不是由我完成的--它必须发生在CoreData
中,我没有正确执行某些操作
提前感谢。如何解决“无法识别的选择器发送到实例0xXXXX错误”
persistantStore
的位置。然后找到你过度释放那个物体的地方即使您的代码没有在
人
上调用持久存储
,您的计算机仍然是。Objective-C是一种动态语言,您的计算机有一个指向Person
对象的指针,它正在向该对象发送persistantStore
。这通常发生在你过度发布了不该发布的内容时。对象已消失,一个新对象已替换它,但指针仍保留,因此当您向该指针发送消息时,它指向现在在内存中占据该位置的对象。问题是我传入了一组NSManagedObject
s,而不是像我应该传递的NSManagedObjectID
s
这就解决了。“即使你没有给某人打persistantStore电话,你的电脑也是。”-这正是我所说的。我不是说苹果的代码不好。我知道那是我的,只是不知道具体在哪里。对不起,我差点没读到你的问题。现在修复,答案也适用于以后可能阅读此内容的任何其他人。