表格视图中的 UITableViewCell 加倍

Posted

技术标签:

【中文标题】表格视图中的 UITableViewCell 加倍【英文标题】:Doubled UITableViewCell in tableview 【发布时间】:2015-10-24 21:33:00 【问题描述】:

我在我的应用中将 iCloud 同步与 coredata 结合使用。有时,我的 tableView 中的数据会显示 2 或 3 次,因此如果我有 2 个单元格,则会显示 4 或 6 个单元格,并且每个第二个单元格都有相同的内容。有人知道为什么会发生这种情况以及如何解决这个问题吗?

我的代码:

func persistentStoreDidChange() 

    //load data
    //tableView.reloadData()
    loadData()


func persistentStoreWillChange(notification:NSNotification) 

    actvityIndicator.hidden = false
    icloudSyncLabel.hidden = false
    actvityIndicator.startAnimating()

    tableView.userInteractionEnabled = false
    textField.userInteractionEnabled = false

    let moc = self.fetchedResultsController.managedObjectContext
    //disable UI (changes in progress)
    managedObjectContext?.performBlock () -> Void in
        if moc.hasChanges 
            var error: NSError? = nil
            if moc.save(&error) 
                abort()
            
            else
                moc.reset()
            
        
    



func recieveICloudChanges(notification:NSNotification) 

    let moc = self.fetchedResultsController.managedObjectContext
    moc.performBlock  () -> Void in

        moc.mergeChangesFromContextDidSaveNotification(notification)
        self.loadData()
    

    tableView.userInteractionEnabled = true
    textField.userInteractionEnabled = true

    actvityIndicator.hidden = true
    icloudSyncLabel.hidden = true
    actvityIndicator.stopAnimating()

【问题讨论】:

【参考方案1】:

您的托管对象上下文看起来有点奇怪。在..WillChange.. 中,您获得对获取结果控制器的托管对象上下文moc 的引用,但是您在不同的(可选)上下文中使用块API,可能是类实例变量。你需要澄清

如果可选上下文不是nil 如果可选上下文与获取的结果控制器的上下文相同(即moc

【讨论】:

非常感谢您的回答!我想过,但真的不知道我该如何解决。您能否举个例子,我如何检查可选上下文是否与获取的结果控制器的上下文相同?

以上是关于表格视图中的 UITableViewCell 加倍的主要内容,如果未能解决你的问题,请参考以下文章

如何在ios中的自定义UITableViewCell中添加轮播视图

滑动 UITableViewCell 操作会影响表格视图中的每 4 个单元格,而不仅仅是目标单元格

UITableViewCell Swift 中的自定义视图

如何将子视图添加到情节提要中的自定义 UITableViewCell

无法查看 UITableViewCell 中的自定义标签

选择时 UITableViewCell 背景颜色中的目标 c 子视图