我正在使用核心数据,并且我有一个 tableView 来显示所有用户的批准
我正在使用 NSFetchedResultsController
从核心数据获取批准
我添加了这些方法,当通知委托(delegate)内容将更改时使用这些方法,我们告诉 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
上下文的更改并更新表格以反射(reflect)这些更改
在tableViewCell
中,我有“再次查询”按钮,它将更新审批状态
这是ApprovalObject
类:
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 ???
}
最佳答案
修改你的数据对象就足够了,例如ApprovalObject
实例的status
(如果需要,请保存)。 NSFetchedResultsControllerDelegate 应该接受并更新有问题的单元格。
当然,您在某个时候删除了委托(delegate)回调中 switch 语句中的 .Change
情况。确保将其放回原处。(您可以从“Master-Detail”Xcode 模板复制它。)
关于swift - 在 UITableViewCell 中按下按钮后获取 NSManagedObject 的一个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33710374/