Core data NSManagedObjects的副本
我有许多视图控制器需要显示核心数据存储中的数据 它们中的每一个都从同一个上下文中获取托管对象,但由于某种原因,当VC多次获取托管对象时,托管对象的数量会增加 ManagedObject不能在同一上下文中共享,只能在指针引用中共享吗 为什么视图控制器请求相同的数据时,托管对象的数量会增加 代码:Core data NSManagedObjects的副本,core-data,nsmanagedobject,nsmanagedobjectcontext,Core Data,Nsmanagedobject,Nsmanagedobjectcontext,我有许多视图控制器需要显示核心数据存储中的数据 它们中的每一个都从同一个上下文中获取托管对象,但由于某种原因,当VC多次获取托管对象时,托管对象的数量会增加 ManagedObject不能在同一上下文中共享,只能在指针引用中共享吗 为什么视图控制器请求相同的数据时,托管对象的数量会增加 代码: 您所显示的不是一个获取。它是一个insert(特别是insertNewObjectForEntityForName:inManagedObjectContext:)。您想要的类是NSFetchReques
您所显示的不是一个获取。它是一个insert(特别是
insertNewObjectForEntityForName:inManagedObjectContext:
)。您想要的类是NSFetchRequest
我还看到,出于某种原因,您将self.persistentStoreCoordinator分配给saveContext的PSC两次,一次在第7行,一次在底部大约10行。获取请求不会创建对象。你能告诉我取回请求的代码吗?我完全同意@MartinR的说法。如果您有一些在启动时填充存储的代码,那么这可能是问题的根源。如果可能的话,提供一些代码。我想你错过了这个问题。我提供这些代码是为了回应flexaddicted的评论“如果您有一些代码在启动时填充了存储,这可能是问题的根源。如果可能的话,请提供一些代码。”此外,第二个任务实际上在一些多线程环境中帮助了我,随机出现一个奇怪的错误,说明上下文没有持久存储。你说得对。我以为你是在回应MartinR的请求,发布获取代码。我们能看到吗?这已经解决了,似乎是一个线程问题和不同步的上下文。
- (void) updateCacheWithObject:(Object *)object
{
[self.coreDataSaveQueue addOperationWithBlock:^{
NSManagedObjectContext *saveContext = [[NSManagedObjectContext alloc] init];
[saveContext setPersistentStoreCoordinator:[self persistentStoreCoordinator]];
AudioObject *object = [NSEntityDescription
insertNewObjectForEntityForName:@"object"
inManagedObjectContext:saveContext];
[audioObject setValue:object.localPath forKey:@"localPath"];
[audioObject setValue:object.title forKey:@"title"];
[audioObject setValue:object.data forKey:@"data"];
NSError *error;
// does the psc have a store
if ([saveContext.persistentStoreCoordinator.persistentStores count] == 0) {
[saveContext setPersistentStoreCoordinator:[self persistentStoreCoordinator]];
}
if (![saveContext save:&error])
{
NSLog(@"Couldn't save: %@", [error localizedDescription]);
NSLog(@"Error user info dictionary is %@", [error userInfo]);
}
}