RLMCollectionChange

Objective-C

@interface RLMCollectionChange : NSObject

Swift

@_nonSendable(_assumed) class RLMCollectionChange : NSObject

A RLMCollectionChange object encapsulates information about changes to collections that are reported by Realm notifications.

RLMCollectionChange is passed to the notification blocks registered with -addNotificationBlock on RLMArray and RLMResults, and reports what rows in the collection changed since the last time the notification block was called.

The change information is available in two formats: a simple array of row indices in the collection for each type of change, and an array of index paths in a requested section suitable for passing directly to UITableView‘s batch update methods. A complete example of updating a UITableView named tv:

[tv beginUpdates];
[tv deleteRowsAtIndexPaths:[changes deletionsInSection:0] withRowAnimation:UITableViewRowAnimationAutomatic];
[tv insertRowsAtIndexPaths:[changes insertionsInSection:0] withRowAnimation:UITableViewRowAnimationAutomatic];
[tv reloadRowsAtIndexPaths:[changes modificationsInSection:0] withRowAnimation:UITableViewRowAnimationAutomatic];
[tv endUpdates];

All of the arrays in an RLMCollectionChange are always sorted in ascending order.

  • The indices of objects in the previous version of the collection which have been removed from this one.

    Declaration

    Objective-C

    @property (nonatomic, readonly) NSArray<NSNumber *> *_Nonnull deletions;

    Swift

    var deletions: [NSNumber] { get }
  • The indices in the new version of the collection which were newly inserted.

    Declaration

    Objective-C

    @property (nonatomic, readonly) NSArray<NSNumber *> *_Nonnull insertions;

    Swift

    var insertions: [NSNumber] { get }
  • The indices in the new version of the collection which were modified.

    For RLMResults, this means that one or more of the properties of the object at that index were modified (or an object linked to by that object was modified).

    For RLMArray, the array itself being modified to contain a different object at that index will also be reported as a modification.

    Declaration

    Objective-C

    @property (nonatomic, readonly) NSArray<NSNumber *> *_Nonnull modifications;

    Swift

    var modifications: [NSNumber] { get }
  • Returns the index paths of the deletion indices in the given section.

    Declaration

    Objective-C

    - (nonnull NSArray<NSIndexPath *> *)deletionsInSection:(NSUInteger)section;

    Swift

    func deletions(inSection section: UInt) -> [IndexPath]
  • Returns the index paths of the insertion indices in the given section.

    Declaration

    Objective-C

    - (nonnull NSArray<NSIndexPath *> *)insertionsInSection:(NSUInteger)section;

    Swift

    func insertions(inSection section: UInt) -> [IndexPath]
  • Returns the index paths of the modification indices in the given section.

    Declaration

    Objective-C

    - (nonnull NSArray<NSIndexPath *> *)modificationsInSection:(NSUInteger)section;

    Swift

    func modifications(inSection section: UInt) -> [IndexPath]