IGListBatchUpdateData


@interface IGListBatchUpdateData : NSObject

An instance of IGListBatchUpdateData takes section indexes and item index paths and performs cleanup on init in order to perform a crash-free update via -[UICollectionView performBatchUpdates:completion:].

  • Section insert indexes.

    Declaration

    Objective-C

    @property (readonly, strong, nonatomic) NSIndexSet *_Nonnull insertSections;

    Swift

    var insertSections: IndexSet { get }
  • Section delete indexes.

    Declaration

    Objective-C

    @property (readonly, strong, nonatomic) NSIndexSet *_Nonnull deleteSections;

    Swift

    var deleteSections: IndexSet { get }
  • Section moves.

    Declaration

    Objective-C

    @property (readonly, strong, nonatomic)
        NSSet<IGListMoveIndex *> *_Nonnull moveSections;

    Swift

    var moveSections: Set<ListMoveIndex> { get }
  • Item insert index paths.

    Declaration

    Objective-C

    @property (readonly, strong, nonatomic)
        NSArray<NSIndexPath *> *_Nonnull insertIndexPaths;

    Swift

    var insertIndexPaths: [IndexPath] { get }
  • Item delete index paths.

    Declaration

    Objective-C

    @property (readonly, strong, nonatomic)
        NSArray<NSIndexPath *> *_Nonnull deleteIndexPaths;

    Swift

    var deleteIndexPaths: [IndexPath] { get }
  • Item update index paths.

    Declaration

    Objective-C

    @property (readonly, strong, nonatomic)
        NSArray<NSIndexPath *> *_Nonnull updateIndexPaths;

    Swift

    var updateIndexPaths: [IndexPath] { get }
  • Item moves.

    Declaration

    Objective-C

    @property (readonly, strong, nonatomic)
        NSArray<IGListMoveIndexPath *> *_Nonnull moveIndexPaths;

    Swift

    var moveIndexPaths: [ListMoveIndexPath] { get }
  • Creates a new batch update object with section and item operations.

    Declaration

    Objective-C

    - (nonnull instancetype)
        initWithInsertSections:(nonnull NSIndexSet *)insertSections
                deleteSections:(nonnull NSIndexSet *)deleteSections
                  moveSections:(nonnull NSSet<IGListMoveIndex *> *)moveSections
              insertIndexPaths:(nonnull NSArray<NSIndexPath *> *)insertIndexPaths
              deleteIndexPaths:(nonnull NSArray<NSIndexPath *> *)deleteIndexPaths
              updateIndexPaths:(nonnull NSArray<NSIndexPath *> *)updateIndexPaths
                moveIndexPaths:
                    (nonnull NSArray<IGListMoveIndexPath *> *)moveIndexPaths
         fixIndexPathImbalance:(BOOL)fixIndexPathImbalance;

    Swift

    init(insertSections: IndexSet, deleteSections: IndexSet, moveSections: Set<ListMoveIndex>, insert insertIndexPaths: [IndexPath], delete deleteIndexPaths: [IndexPath], update updateIndexPaths: [IndexPath], moveIndexPaths: [ListMoveIndexPath], fixIndexPathImbalance: Bool)

    Parameters

    insertSections

    Section indexes to insert.

    deleteSections

    Section indexes to delete.

    moveSections

    Section moves.

    insertIndexPaths

    Item index paths to insert.

    deleteIndexPaths

    Item index paths to delete.

    updateIndexPaths

    Item index paths to update.

    moveIndexPaths

    Item index paths to move.

    fixIndexPathImbalance

    When enabled, we remove duplicate NSIndexPath inserts to avoid insert/delete imbalance and a crash.

    Return Value

    A new batch update object.

  • Convenience initializer with fixIndexPathImbalance disabled.

    Declaration

    Objective-C

    - (nonnull instancetype)
        initWithInsertSections:(nonnull NSIndexSet *)insertSections
                deleteSections:(nonnull NSIndexSet *)deleteSections
                  moveSections:(nonnull NSSet<IGListMoveIndex *> *)moveSections
              insertIndexPaths:(nonnull NSArray<NSIndexPath *> *)insertIndexPaths
              deleteIndexPaths:(nonnull NSArray<NSIndexPath *> *)deleteIndexPaths
              updateIndexPaths:(nonnull NSArray<NSIndexPath *> *)updateIndexPaths
                moveIndexPaths:
                    (nonnull NSArray<IGListMoveIndexPath *> *)moveIndexPaths;

    Swift

    convenience init(insertSections: IndexSet, deleteSections: IndexSet, moveSections: Set<ListMoveIndex>, insert insertIndexPaths: [IndexPath], delete deleteIndexPaths: [IndexPath], update updateIndexPaths: [IndexPath], moveIndexPaths: [ListMoveIndexPath])