2015-09-12 29 views
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]; 

但问题是,即使我保存这个第二方面,它实际上是不保存。数据不存在。我该如何解决这个问题?

+0

很难从你提供的代码中识别出来,但是我怀疑你不得不重新定义'NSManagedObjectContext'。我建议你的问题是相关的,而不是你的代码的结构。 – andrewbuilder

+0

@andrewbuilder是的,我想这是很难用这段代码,但我想避免把whooole页。但基本上这两个实体基本上都以相同的方式调用,只是实体名称发生了变化。但在第二个他们没有得救...我怎么能提供更多的信息? –

+0

有些用户将他们的项目或相关类上传到GitHub。更重要的是,您可以删除对MOC的引用,并将其替换为包含您的保存方法的代码。最重要的是,我建议您了解视图控制器多态性,层次结构和继承。斯坦福大学Paul Hegarty在iTunes U上的讲座很棒。 – andrewbuilder

回答