0
我在我的应用程序中使用CoreData,我有两个主要实体,比如说猫和狗。 我有这样的方法,我用它来初始化我的上下文:iOS - 更新多个CoreData实体和上下文
- (NSManagedObjectContext *)managedObjectContext
{
NSManagedObjectContext *context = nil;
id delegate = [[UIApplication sharedApplication] delegate];
if ([delegate performSelector:@selector(managedObjectContext)]) {
context = [delegate managedObjectContext];
}
return context;
}
它指的是这个方法在我的应用程序代表:现在
- (NSManagedObjectContext *)managedObjectContext
{
if (_managedObjectContext != nil) {
return _managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
_managedObjectContext = [[NSManagedObjectContext alloc] init];
[_managedObjectContext setPersistentStoreCoordinator:coordinator];
}
return _managedObjectContext;
}
,在某些时候,我需要更新一些数据我的猫实体。
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];
然后,我想为我的狗实体做同样的事情。所以我使用相同的代码,但对于狗实体。这是在我的代码另一部分,所以我必须要重新定义:
NSManagedObjectContext *context = [self managedObjectContext];
但问题是,即使我保存这个第二方面,它实际上是不保存。数据不存在。我该如何解决这个问题?
很难从你提供的代码中识别出来,但是我怀疑你不得不重新定义'NSManagedObjectContext'。我建议你的问题是相关的,而不是你的代码的结构。 – andrewbuilder
@andrewbuilder是的,我想这是很难用这段代码,但我想避免把whooole页。但基本上这两个实体基本上都以相同的方式调用,只是实体名称发生了变化。但在第二个他们没有得救...我怎么能提供更多的信息? –
有些用户将他们的项目或相关类上传到GitHub。更重要的是,您可以删除对MOC的引用,并将其替换为包含您的保存方法的代码。最重要的是,我建议您了解视图控制器多态性,层次结构和继承。斯坦福大学Paul Hegarty在iTunes U上的讲座很棒。 – andrewbuilder