我在我的应用中使用iCloud Sync与coredata结合使用。有时会发生我的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()
}
答案 0 :(得分:0)
您的托管对象上下文看起来有点奇怪。在..WillChange..
中,您获得对获取结果控制器的托管对象上下文moc
的引用,但您在不同(可选)上下文中使用块API,可能是类实例变量。你需要澄清
nil
moc
)