# ListSectionObserver

    public protocol ListSectionObserver : ListObjectObserver

Implement the `ListSectionObserver` protocol to observe changes to a list’s section info. `ListSectionObserver`s may register themselves to a `ListMonitor`‘s `addObserver(_:)` method:

    let monitor = dataStack.monitorSectionedList(
        From<MyPersonEntity>(),
        SectionBy("age") { "Age \($0)" },
        OrderBy(.ascending("lastName"))
    )
    monitor.addObserver(self)

- `listMonitor(_:didInsertSection:toSectionIndex:sourceIdentifier:)` Default implementation

  Notifies that a section was inserted at the specified index. (Optional) The default implementation does nothing.

  #### Default Implementation

  #### Declaration

  Swift

      func listMonitor(
          _ monitor: ListMonitor<ListEntityType>,
          didInsertSection sectionInfo: NSFetchedResultsSectionInfo,
          toSectionIndex sectionIndex: Int,
          sourceIdentifier: Any?
      )

  #### Parameters

  `monitor` | the `ListMonitor` monitoring the list being observed
  `sectionInfo` | the `NSFetchedResultsSectionInfo` for the inserted section
  `sectionIndex` | the new section index for the new section
  `sourceIdentifier` | an optional identifier provided by the transaction source

- `listMonitor(_:didInsertSection:toSectionIndex:)` Default implementation

  Notifies that a section was inserted at the specified index. (Optional) The default implementation does nothing.

  #### Default Implementation

  #### Declaration

  Swift

      func listMonitor(
          _ monitor: ListMonitor<ListEntityType>,
          didInsertSection sectionInfo: NSFetchedResultsSectionInfo,
          toSectionIndex sectionIndex: Int
      )

  #### Parameters

  `monitor` | the `ListMonitor` monitoring the list being observed
  `sectionInfo` | the `NSFetchedResultsSectionInfo` for the inserted section
  `sectionIndex` | the new section index for the new section

- `listMonitor(_:didDeleteSection:fromSectionIndex:sourceIdentifier:)` Default implementation

  Notifies that a section was inserted at the specified index. (Optional) The default implementation does nothing.

  #### Default Implementation

  #### Declaration

  Swift

      func listMonitor(
          _ monitor: ListMonitor<ListEntityType>,
          didDeleteSection sectionInfo: NSFetchedResultsSectionInfo,
          fromSectionIndex sectionIndex: Int,
          sourceIdentifier: Any?
      )

  #### Parameters

  `monitor` | the `ListMonitor` monitoring the list being observed
  `sectionInfo` | the `NSFetchedResultsSectionInfo` for the deleted section
  `sectionIndex` | the previous section index for the deleted section
  `sourceIdentifier` | an optional identifier provided by the transaction source

- `listMonitor(_:didDeleteSection:fromSectionIndex:)` Default implementation

  Notifies that a section was inserted at the specified index. (Optional) The default implementation does nothing.

  #### Default Implementation

  #### Declaration

  Swift

      func listMonitor(
          _ monitor: ListMonitor<ListEntityType>,
          didDeleteSection sectionInfo: NSFetchedResultsSectionInfo,
          fromSectionIndex sectionIndex: Int
      )

  #### Parameters

  `monitor` | the `ListMonitor` monitoring the list being observed
  `sectionInfo` | the `NSFetchedResultsSectionInfo` for the deleted section
  `sectionIndex` | the previous section index for the deleted section