问题与CoreData

问题描述:

删除我使用这个代码删除从CoreData的条目:问题与CoreData

 NSManagedObjectContext *context2=[self managedObjectContext]; 
     NSFetchRequest *fetch2 = [[NSFetchRequest alloc] init]; 
     NSEntityDescription *entity2=[NSEntityDescription entityForName:@"RecentMovies" inManagedObjectContext:context2]; 
     [fetch2 setEntity:entity2]; 
     [fetch2 setResultType:NSDictionaryResultType]; 
     NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"DateTime"]; 
     NSExpression *minDateExpression = [NSExpression expressionForFunction:@"min:" 
                arguments:[NSArray arrayWithObject:keyPathExpression]]; 
     NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc] init]; 
     [expressionDescription setName:@"minDateTime"]; 
     [expressionDescription setExpression:minDateExpression]; 
     [expressionDescription setExpressionResultType:NSDateAttributeType];  
     [fetch2 setPropertiesToFetch:[NSArray arrayWithObject:expressionDescription]]; 

     error=nil; 
     NSArray *objects2 = [context2 executeFetchRequest:fetch2 error:&error]; 
     if (objects2 == nil) { 
      // Handle the error. 
      NSLog(@"ERRORS IN SEARCH INSIDE VIEW SUCCESS"); 
     } 
     else { 
      if ([objects2 count] > 0) { 
       NSLog(@"Minimum date: %@", [[objects2 objectAtIndex:0] valueForKey:@"minDateTime"]); 

       //delete the oldest entry ! 
       for (NSManagedObject *object2 in objects2) { 
        [context2 deleteObject:object2]; 
       } 

      } 
     } 

不过,我收到以下错误:

Minimum date: 2011-08-03 08:32:35 +0000 
2011-08-03 03:33:15.014 EncameoApp[1933:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'An NSManagedObjectContext cannot delete objects in other contexts.' 

任何帮助吗?

我在CoreData中还有2个其他表,并且[self managedObjectContext]在所有CoreData代码之间共享。我在这里对关于上下文的错误信息有点困惑......

通常改变你正在迭代的数组是一个坏主意。

   for (NSManagedObject *object2 in objects2) { 
       [context2 deleteObject:object2]; 
      } 
+0

不知道你的意思,我没有改变阵列,其中1是对象2,另一种是objects2 ...他们是不一样的名字......:-s – ahsan

+0

对象2是object2中的一个对象,然后继续删除object2,从而更改objects2数组。问题出现在循环中,因为object2被取出而另一个object2取代了它的位置,改变了快速枚举器使用的[objects count]值。 – RickiG

+0

那么你有什么建议? – ahsan