からエントリを削除する際に問題がありCore Data
ます。
動作しますが、NSManagedObject データに値がない (障害) ため、間違ったエントリが削除されることがあります。
私のdeleteWholeDatabaseメソッドでは、オブジェクトに値が入力されています。また、deleteEntryFromDatabaseメソッドには値がありません。しかし、なぜ?
ここに私の方法があります:
-(NSArray*)databaseRequest{
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:currentEntity inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
[fetchRequest setReturnsObjectsAsFaults:NO];
NSError *error;
NSArray *items = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
return items;
}
-(void)deleteWholeDatabase{
for (NSManagedObject *objectToDelete in [self databaseRequest]) {
[managedObjectContext deleteObject:objectToDelete];
NSLog(@"%@ object deleted",objectToDelete);
}
[self saveContext];
NSLog(@"All entries deleted!");
}
-(void)deleteEntryFromDatabase:(NSManagedObjectContext*)context forEntry:(NSIndexPath*)indexPath{
NSManagedObject *objectToDelete=[[self databaseRequest] objectAtIndex:indexPath.row];
[managedObjectContext deleteObject:[managedObjectContext objectWithID:[objectToDelete objectID]]];
[self saveContext];
NSLog(@"%@ deleted!",[managedObjectContext objectWithID:[objectToDelete objectID]]);
}