Ios tableview中的UtableViewCell

Ios tableview中的UtableViewCell,ios,swift,core-data,synchronization,icloud,Ios,Swift,Core Data,Synchronization,Icloud,我在应用程序中结合coredata使用iCloud Sync。有时,我的tableView中的数据会显示2或3次,因此如果我有2个单元格,则会显示4或6个单元格,并且每2个单元格都有相同的内容。有人知道为什么会发生这种情况以及如何解决吗 我的代码: func persistentStoreDidChange() { //load data //tableView.reloadData() loadData() } func persistentStoreWillCha

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

我的代码:

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()
}

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

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

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