我在我的项目中使用核心数据,在我的一个表格视图中,我用一些对象填充单元格。
此表视图中的第一个单元格是我要根据此对象“status”属性删除的对象。所以在另一个视图控制器中我改变到表中的第一个对象'status'为'1',我希望能够在视觉上删除单元格而不是核心数据对象。
所以现在我的commitEditingStyle方法如下所示:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
Target *target = [self.fetchedResultController objectAtIndexPath:indexPath];
target.status = @1;
CoreDataStack *stack = [CoreDataStack defaultStack];
[[stack managedObjectContext] deleteObject:target] ;
[stack saveContext];
}
if ([_delegate respondsToSelector:@selector(didDeleteObject)]) {
[self fetchData];
[_delegate didDeleteObject];
}
}
目前正如您所见,我正在从堆栈中删除记录,我可以做的是删除这些行:
CoreDataStack *stack = [CoreDataStack defaultStack];
[[stack managedObjectContext] deleteObject:target] ;
[stack saveContext];
现在我不会删除记录,但会删除该单元格。 现在奇怪的事情(对我来说)是当我删除那些我没有删除记录的行但是单元格也没有被删除...我不明白为什么这些行删除了单元格...不仅仅是那些行删除记录..?
由于
didDeleteObject方法:
- (void)didDeleteObject {
self.homeLabel.text = stackTableViewController.currentTarget;
self.homeLabel.frame = homeLabelRect;
for(int i = 40; i>5; i--){
CGRect labelRect = [self.homeLabel.text
boundingRectWithSize:CGSizeMake(self.view.frame.size.width, MAXFLOAT)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{
NSFontAttributeName : self.homeLabel.font
}
context:nil];
if(labelRect.size.height < self.homeLabel.frame.size.height){
self.homeLabel.font =[UIFont fontWithName:@"Candara-Bold" size:i];
return;
}
}
}
答案 0 :(得分:0)
我看到你在你的代码上使用了NSFetchedResultController。
NSFetchedResultControllerDelegate方法一起删除UITableViewCell。
请检查您的代码NSFetchedResultControllerDelegate方法。
- (void)controller:(NSFetchedResultsController *)controller
didChangeObject:(id)anObject
atIndexPath:(NSIndexPath *)indexPath
forChangeType:(NSFetchedResultsChangeType)type
newIndexPath:(NSIndexPath *)newIndexPath