我想从另一个viewcontroller编辑nsfetchresults记录,如果我所有的数据库条目都显示,它工作正常。但是,当我按日期过滤表,并尝试对其进行编辑,我得到这个错误如何在仅显示某些记录时编辑nsfetchresults记录?
2013年3月22日23:09:02.895 easyDB [1079:907] *断言失败 - [UITableView的_endCellAnimationsWithContext:],/SourceCache/UIKit/UIKit-2380.17/UITableView.m:1070 2013-03-22 23:09:18.865 easyDB [1079:907]抓到异常!
NSInternalInconsistencyException
无效更新:在部分0的行的无效数(6)的包含在现有部分中的更新后的行 数必须 等于之前包含在该部分的行数 更新(2),加上或减去从 插入或删除的行数(0插入,0删除)以及加或减行数 移入或移出该部分的行数(移入0,0搬出)。
我通过
NSIndexPath *indexpath = (NSIndexPath*)sender;
GlucoseDetailViewController *glucoseDetailsVC = (GlucoseDetailViewController*)segue.destinationViewController;
GlucoseRecords *rec = [self.fetchedResultsController objectAtIndexPath:indexpath];
[glucoseDetailsVC setSentRecord:rec];
而且在编辑视图
[self.sentRecord setGlucose:[NSNumber numberWithInt:[[txtGlucoseReading text] intValue]]];
[self.sentRecord setDate:self.dateToAdd];
[self.sentRecord setMealType:[NSString stringWithString:self.strMealOption]];
[self.sentRecord setQuickNote:[NSString stringWithString:self.strQuickNote]];
[self.sentRecord setDeleted:[NSNumber numberWithBool:NO]];
[self.sentRecord setWhoRecorded:[self.settings currentUser]];
NSError *error;
if (![[self.settings managedObjectContext] save:&error])
NSLog(@"Failed to add default user with error: %@", [error domain]);
FetchedResults控制器发送
- (NSFetchedResultsController *)fetchedResultsController {
if (_fetchedResultsController != nil && [self.strCurrentEntetyName isEqualToString:self.strEntetyName] &&(self.filteChanged==[NSNumber numberWithBool:NO])) {
return _fetchedResultsController;
}
self.filteChanged = [NSNumber numberWithBool:NO];
self.strCurrentEntetyName = [NSString stringWithString:self.strEntetyName];
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:[self strEntetyName]];
//NSEntityDescription *entity = [NSEntityDescription
// entityForName:@"Records" inManagedObjectContext:[self.settings managedObjectContext]];
if (self.isDateFilterSet==[NSNumber numberWithBool:NO])
{
fetchRequest.predicate = [NSPredicate predicateWithFormat:@" whoRecorded.username = %@ AND deleted=0", [self.settings.currentUser username]];
}
else
{
fetchRequest.predicate = [NSPredicate predicateWithFormat:@" (whoRecorded.username = %@) AND (deleted = 0) AND (date =>%@) AND (date<=%@)", [self.settings.currentUser username],self.dateMinSetFilter ,self.dateMaxSetFilter];
}
NSLog(@"User:%@",[self.settings.currentUser username]);
// [fetchRequest setEntity:entity];
NSSortDescriptor *sort = [[NSSortDescriptor alloc]
initWithKey:@"date" ascending:NO];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[fetchRequest setFetchBatchSize:100];
NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:[self.settings managedObjectContext] sectionNameKeyPath:nil
cacheName:nil];
self.fetchedResultsController = theFetchedResultsController;
_fetchedResultsController.delegate = self;
return _fetchedResultsController;
}
我的理解是什么问题,但我不能看到解决它的任何好方法。我可以重置表格以在编辑前显示所有条目,但我不认为这是一个好的解决方案。有没有更好的方法来解决这个问题?
谢谢
请发表您的fetchedResultsController代码。 – 2013-03-23 05:52:52
已发布,谢谢! – user2067051 2013-03-23 06:32:36