Core data NSManagedObjects的副本

Core data NSManagedObjects的副本,core-data,nsmanagedobject,nsmanagedobjectcontext,Core Data,Nsmanagedobject,Nsmanagedobjectcontext,我有许多视图控制器需要显示核心数据存储中的数据 它们中的每一个都从同一个上下文中获取托管对象,但由于某种原因,当VC多次获取托管对象时,托管对象的数量会增加 ManagedObject不能在同一上下文中共享,只能在指针引用中共享吗 为什么视图控制器请求相同的数据时,托管对象的数量会增加 代码: 您所显示的不是一个获取。它是一个insert(特别是insertNewObjectForEntityForName:inManagedObjectContext:)。您想要的类是NSFetchReques

我有许多视图控制器需要显示核心数据存储中的数据

它们中的每一个都从同一个上下文中获取托管对象,但由于某种原因,当VC多次获取托管对象时,托管对象的数量会增加

ManagedObject不能在同一上下文中共享,只能在指针引用中共享吗

为什么视图控制器请求相同的数据时,托管对象的数量会增加

代码:


您所显示的不是一个获取。它是一个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]);
    }
}