NSManagedObjects的重复副本

时间:2013-03-15 01:31:19

标签: core-data nsmanagedobject nsmanagedobjectcontext

我有许多需要显示来自Core-Data商店的数据的View Controller。

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

是否可以在同一个上下文中共享managedObject,只能指针引用?

当View Controllers请求相同的数据时,为什么托管对象的数量会增加?

代码:

- (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]);
    }
}

1 个答案:

答案 0 :(得分:0)

你所展示的不是取物。它是一个插入(特别是insertNewObjectForEntityForName:inManagedObjectContext:)。您想要的课程是NSFetchRequest

我也看到,出于某种原因,你将self.persistentStoreCoordinator分配给saveContext的PSC两次,一次在第7行,一次从底部开始约10行。