xcode / ios / core数据:表格视图中的最后一条记录在添加新记录后显示两次

时间:2015-03-20 18:22:54

标签: ios xcode core-data

我遇到了一个奇怪的问题。当我向实体添加记录,即某些屏幕的核心数据时,表格视图而不是显示新记录,重复上一条记录。

它总是发生在一些实体和屏幕上,即如果我添加记录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>

1 个答案:

答案 0 :(得分:0)

对我来说,这是TableView中的一个错误。 实际上,最后一行显示两次,但“最后一行”为空。 我通过在链接的css中添加此代码解决了这个问题(用相同的背景和文本填充颜色填充空行并删除边框。 它工作正常!

.table-row-cell:empty .table-cell 
-fx-border-width: 0px;
-fx-background-color: white;
-fx-text-fill: white;