2012-10-17 90 views
0

我使用下面的代碼來刪除coredata數據庫內容...我正確地得到通知......但似乎數據沒有被刪除......我無法弄清楚。 ..刪除核心數據內容的奇怪行爲

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
     NSEntityDescription *entity = [NSEntityDescription entityForName:entityDescription inManagedObjectContext:self.managedObjectContext]; 
     [fetchRequest setEntity:entity]; 
     NSError *errors; 
     NSArray *items = [self.managedObjectContext executeFetchRequest:fetchRequest error:&errors]; 
     NSLog(@"FinalArray:%@",[finalArray objectAtIndex:currentImageIndex]); 
     NSManagedObject *managedObject=[finalArray objectAtIndex:currentImageIndex]; 
     NSLog(@"NSManagedObject:%@",managedObject); 
     for (int i=0;i<[items count];i++) 
     { 
      if ([managedObject isEqual:[items objectAtIndex:i]]) 
      { 
       [self.managedObjectContext deleteObject:managedObject]; 
       NSLog(@"gone"); 
      } 
     } 
     NSNotificationCenter *nc=[NSNotificationCenter defaultCenter]; 
     [nc addObserver:self selector:@selector(deleteCheck:) name:NSManagedObjectContextObjectsDidChangeNotification object:self.managedObjectContext]; 
     NSLog(@"dffsdf%@",[errors description]); 
     if (self.managedObjectContext==nil) 
     { 
      NSLog(@"deleted"); 
     } 

通知Func鍵呼叫

- (void)deleteCheck:(NSNotification *)notification 
{ 
    NSLog(@"CoreData got Deleted"); 
    NSDictionary *userInfoDictionary = [notification userInfo]; 
    NSSet *deletedObjects = [userInfoDictionary objectForKey:NSDeletedObjectsKey]; 
    NSLog(@"DeletedObjects%@",deletedObjects); 
} 

既然叫每次當我點擊刪除按鈕NSManagedObjectContextObjectsDidChangeNotification通知......但是,沒有影響在DB ...建議請

回答

0

您需要保存在最後。

NSError *error = nil; 
[self.managedObjectContext save:&error]; 
0

您可以使用,我用這個簡單的刪除方法,它的工作完美:

-(void)deleteRecords{ 
NSFetchRequest * deleteRequest = [[[NSFetchRequest alloc] init] autorelease]; 
[deleteRequest setEntity:[NSEntityDescription entityForName:@"yourTabelName" inManagedObjectContext:context]]; 
[deleteRequest setIncludesPropertyValues:NO]; //only fetch the managedObjectID 

NSError * error = nil; 
NSArray * cars = [context executeFetchRequest:deleteRequest error:&error]; 

if ([cars count] !=0) {  

    //error handling goes here 

    for (NSManagedObject * car in cars) { 

     [context deleteObject:car]; 
    } 
    NSError *saveError = nil; 
    [context save:&saveError]; 
    // [tableView reloadData]; 


} 
else { 
    NSLog(@"No Data To delete"); 

} } 
+0

這將完全刪除您的實體中的所有內容...我不想要這個我想刪除用戶選擇的特定內容..呃謝謝你的回覆太... – Icoder