在UITableViewCell中按下按钮后获取NSManagedObject的一个属性

时间:2015-11-14 16:04:59

标签: swift uitableview core-data

我正在使用核心数据,我有一个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 ???
    }

1 个答案:

答案 0 :(得分:0)

修改数据对象就足够了,例如status实例的ApprovalObject(如果需要,可以保存)。 NSFetchedResultsControllerDelegate应该接收并更新相关单元格。

当然,您在某个时候删除了委托回调中switch语句中的.Change个案。确保将其重新放入。(您可以从" Master-Detail" Xcode模板中复制它。)