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

标签 swift uitableview core-data

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

相关文章:

ios - CoreData NSFetchedResultsController 排序

core-data - 如何避免更改 NSBatchInsertRequest 中的属性值?

ios - 条件绑定(bind)的初始化程序必须具有可选类型,而不是 '() -> Data?'

uitableview - 使 UITableViewCell 的某些区域不可选择

ios - Swift 3 数组限制

ios - 如何在 ios 中将 NSobject 类数据从一个类传递到另一个类?

swift - 当滚动单元格时更改焦点和颜色

ios - 后台抓取导致应用程序卡住而不是前台抓取

swift - 为什么在重用注释 View Mapkit Swift 4 时我的标签文本没有改变

json - Alamofire 错误域=NSURLErrorDomain 代码=-999 "cancelled"