我有许多需要显示来自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]);
}
}
答案 0 :(得分:0)
你所展示的不是取物。它是一个插入(特别是insertNewObjectForEntityForName:inManagedObjectContext:
)。您想要的课程是NSFetchRequest
。
我也看到,出于某种原因,你将self.persistentStoreCoordinator分配给saveContext的PSC两次,一次在第7行,一次从底部开始约10行。