我遇到了一个奇怪的问题。当我向实体添加记录,即某些屏幕的核心数据时,表格视图而不是显示新记录,重复上一条记录。
它总是发生在一些实体和屏幕上,即如果我添加记录1,2,3等,它将显示1,1,1。对于使用相同代码的其他屏幕和实体,有时会发生这种情况,通常是在大约8到10个记录之后。
在这些情况下,如果我添加名为1,2,3 ... 10的记录,它将显示1,2,3,4,5,6,7,8,8,8,8,8,8等。
有没有人遇到过这种奇怪/怪异的行为?为什么它会立即或在某个时刻认为新记录与之前的记录相同,即当记录数达到8左右时?
请注意,它在核心数据中保存得很好,因为当我关闭模拟器并重建时,它会显示正确的记录。
代理模式似乎也有点工作 - 因为它在添加一个时显示一条新记录,只显示最后一条记录的副本,然后显示它被卡住的记录,即8,8,8等
感谢您的任何建议。这让我疯狂了一个星期了。
我发布没有代码的SO不会接受我出于某种原因发布的代码...很高兴发布任何请求的代码。
编辑:
#pragma mark - Table view data source
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"Cell"];
Lists *list = [self.fetchedResultsController objectAtIndexPath:indexPath];
cell.textLabel.text = list.listname;
cell.detailTextLabel.text = list.list;
return cell;
}
回应邓肯:
Apple的文档说明:
“委托必须至少实现一种更改跟踪委托方法,才能启用更改跟踪。提供controllerDidChangeContent的空实现就足够了。”
我的代码包括:
#pragma mark - NSFetchedResultsControllerDelegate
-(void)controllerDidChangeContent:(NSFetchedResultsController *)controller {
//change
}
我知道有一个更详细的方法会更改内容并使用switch语句更改内容以用于不同的情况,但文档说没有必要。 (我也尝试了它并没有解决问题。)我将列表文件声明为标题中的委托:
@interface ListsVC : UITableViewController<UITableViewDataSource, UITableViewDelegate,NSFetchedResultsControllerDelegate>
答案 0 :(得分:0)
对我来说,这是TableView
中的一个错误。
实际上,最后一行显示两次,但“最后一行”为空。
我通过在链接的css中添加此代码解决了这个问题(用相同的背景和文本填充颜色填充空行并删除边框。
它工作正常!
.table-row-cell:empty .table-cell
-fx-border-width: 0px;
-fx-background-color: white;
-fx-text-fill: white;