我正在使用核心数据,我有一个tableView来显示所有用户的批准
我正在使用NSFetchedResultsController
从核心数据中获取批准
我添加了这些方法,当委托通知内容将发生变化时使用,我们告诉tableView开始更新
func controllerWillChangeContent(controller: NSFetchedResultsController) {
tableView.beginUpdates()
}
func controllerDidChangeContent(controller: NSFetchedResultsController) {
tableView.endUpdates()
}
func controller(controller: NSFetchedResultsController, didChangeSection sectionInfo: NSFetchedResultsSectionInfo, atIndex sectionIndex: Int, forChangeType type: NSFetchedResultsChangeType) {
// 1
switch type {
case .Insert:
tableView.insertSections(NSIndexSet(index: sectionIndex), withRowAnimation: .Automatic)
case .Delete:
tableView.deleteSections(NSIndexSet(index: sectionIndex), withRowAnimation: .Automatic)
default: break
}
}
func controller(controller: NSFetchedResultsController, didChangeObject anObject: AnyObject, atIndexPath indexPath: NSIndexPath?, forChangeType type: NSFetchedResultsChangeType, newIndexPath: NSIndexPath?) {
// 2
switch type {
case .Insert:
tableView.insertRowsAtIndexPaths([newIndexPath!], withRowAnimation: .Automatic)
case .Delete:
tableView.deleteRowsAtIndexPaths([indexPath!], withRowAnimation: .Automatic)
default: break
}
}
我的理解:NSFetchtedResultsController
可以监控对NSManagedObject
上下文的更改并更新表以反映这些更改
在tableViewCell
我有“再次询问”按钮,该按钮将更新审批状态
这是ApprovalObject
Class:
public class ApprovalObject: NSManagedObject {
@NSManaged public var reference_no: NSNumber
@NSManaged public var status: String
@NSManaged public var date: NSDate
@NSManaged public var card: Card
@NSManaged public var hospital: Hospital
}
我的问题是:如何在按下tableViewCell中的按钮后获取特定“ApprovalObject”的“status”属性的值?我可以只调用tableView.beginUpdates()??
@IBAction func inquireApprovalBtn(sender: AnyObject) {
// what should i do here ???
}
答案 0 :(得分:0)
修改数据对象就足够了,例如status
实例的ApprovalObject
(如果需要,可以保存)。 NSFetchedResultsControllerDelegate
应该接收并更新相关单元格。
当然,您在某个时候删除了委托回调中switch语句中的.Change
个案。确保将其重新放入。(您可以从" Master-Detail" Xcode模板中复制它。)