我在我的应用程序中使用CoreData,我有两个主要实体,让我们说Cats and Dogs。 我有这个方法用于初始化我的上下文:
- (NSManagedObjectContext *)managedObjectContext
{
NSManagedObjectContext *context = nil;
id delegate = [[UIApplication sharedApplication] delegate];
if ([delegate performSelector:@selector(managedObjectContext)]) {
context = [delegate managedObjectContext];
}
return context;
}
在我的App Delegate中引用此方法:
- (NSManagedObjectContext *)managedObjectContext
{
if (_managedObjectContext != nil) {
return _managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
_managedObjectContext = [[NSManagedObjectContext alloc] init];
[_managedObjectContext setPersistentStoreCoordinator:coordinator];
}
return _managedObjectContext;
}
现在,在某些时候,我必须更新我的Cats实体中的一些数据。
NSManagedObjectContext *context = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Cats"];
NSMutableArray *catsArrayData = [[context executeFetchRequest:fetchRequest error:nil] mutableCopy];
NSManagedObject *aCat = [catsArrayData objectAtIndex:i];
NSMutableArray *catsArray = [aCat valueForKey:@"cat"];
[catsArray addObject:responseData];
[aCat setValue:catsArray forKey:@"cat"];
NSError *error = nil;
[context save:&error];
然后,我想为我的Dogs实体做同样的事情。所以我使用相同的代码,但对于狗实体。这是我的代码的另一部分,所以我必须重新定义:
NSManagedObjectContext *context = [self managedObjectContext];
但问题是即使我保存了第二个上下文,它实际上也没有保存。数据不存在。我该如何解决这个问题?