UnsafeDataTransaction

public final class UnsafeDataTransaction : BaseDataTransaction

The UnsafeDataTransaction provides an interface for non-contiguous NSManagedObject or CoreStoreObject creates, updates, and deletes. This is useful for making temporary changes, such as partially filled forms. An unsafe transaction object should typically be only used from the main queue.

  • Saves the transaction changes asynchronously. For an UnsafeDataTransaction, multiple commits are allowed, although it is the developer’s responsibility to ensure a reasonable leeway to prevent blocking the main thread.

    Declaration

    Swift

    public func commit(_ completion: @escaping (_ error: CoreStoreError?) -> Void)

    Parameters

    completion

    the block executed after the save completes. Success or failure is reported by the optional error argument of the block.

  • Saves the transaction changes and waits for completion synchronously. For an UnsafeDataTransaction, multiple commits are allowed, although it is the developer’s responsibility to ensure a reasonable leeway to prevent blocking the main thread.

    Throws

    a CoreStoreError value indicating the failure.

    Declaration

    Swift

    public func commitAndWait() throws
  • Rolls back the transaction.

    Declaration

    Swift

    public func rollback()
  • Undo’s the last change made to the transaction.

    Declaration

    Swift

    public func undo()
  • Immediately flushes all pending changes to the transaction’s observers. This is useful in conjunction with ListMonitors and ObjectMonitors created from UnsafeDataTransactions used to manage temporary scratch data.

    Important

    Note that unlike commit(), flush() does not propagate/save updates to the DataStack and the persistent store. However, the flushed changes will be seen by children transactions created further from the current transaction (i.e. through transaction.beginUnsafe())

    Throws

    an error thrown from closure, or an error thrown by Core Data (usually validation errors or conflict errors)

    Declaration

    Swift

    public func flush()
  • Flushes all pending changes to the transaction’s observers at the end of the closure‘s execution. This is useful in conjunction with ListMonitors and ObjectMonitors created from UnsafeDataTransactions used to manage temporary scratch data.

    Important

    Note that unlike commit(), flush() does not propagate/save updates to the DataStack and the persistent store. However, the flushed changes will be seen by children transactions created further from the current transaction (i.e. through transaction.beginUnsafe())

    Throws

    an error thrown from closure, or an error thrown by Core Data (usually validation errors or conflict errors)

    Declaration

    Swift

    public func flush(closure: () throws -> Void) rethrows

    Parameters

    closure

    the closure where changes can be made prior to the flush

  • Redo’s the last undone change to the transaction.

    Declaration

    Swift

    public func redo()
  • Begins a child transaction where NSManagedObject or CoreStoreObject creates, updates, and deletes can be made. This is useful for making temporary changes, such as partially filled forms.

    • prameter supportsUndo: undo(), redo(), and rollback() methods are only available when this parameter is true, otherwise those method will raise an exception. Defaults to false. Note that turning on Undo support may heavily impact performance especially on iOS or watchOS where memory is limited.

    Declaration

    Swift

    public func beginUnsafe(supportsUndo: Bool = false) -> UnsafeDataTransaction

    Return Value

    an UnsafeDataTransaction instance where creates, updates, and deletes can be made.

  • Declaration

    Swift

    public var debugDescription: String { get }
  • Utility for creating an NSFetchedResultsController from the UnsafeDataTransaction. This is useful when an NSFetchedResultsController is preferred over the overhead of ListMonitors abstraction.

    Note

    It is the caller’s responsibility to call performFetch() on the created NSFetchedResultsController.

    Declaration

    Swift

    @nonobjc
    public func createFetchedResultsController<D>(_ from: From<D>, _ sectionBy: SectionBy<D>, _ fetchClauses: FetchClause...) -> NSFetchedResultsController<D> where D : NSManagedObject

    Parameters

    from

    a From clause indicating the entity type

    sectionBy

    a SectionBy clause indicating the keyPath for the attribute to use when sorting the list into sections

    fetchClauses

    a series of FetchClause instances for fetching the object list. Accepts Where, OrderBy, and Tweak clauses.

    Return Value

    an NSFetchedResultsController that observes the UnsafeDataTransaction

  • Utility for creating an NSFetchedResultsController from the UnsafeDataTransaction. This is useful when an NSFetchedResultsController is preferred over the overhead of ListMonitors abstraction.

    Note

    It is the caller’s responsibility to call performFetch() on the created NSFetchedResultsController.

    Declaration

    Swift

    @nonobjc
    public func createFetchedResultsController<D>(_ from: From<D>, _ sectionBy: SectionBy<D>, _ fetchClauses: [FetchClause]) -> NSFetchedResultsController<D> where D : NSManagedObject

    Parameters

    from

    a From clause indicating the entity type

    sectionBy

    a SectionBy clause indicating the keyPath for the attribute to use when sorting the list into sections

    fetchClauses

    a series of FetchClause instances for fetching the object list. Accepts Where, OrderBy, and Tweak clauses.

    Return Value

    an NSFetchedResultsController that observes the UnsafeDataTransaction

  • Utility for creating an NSFetchedResultsController from the UnsafeDataTransaction. This is useful when an NSFetchedResultsController is preferred over the overhead of ListMonitors abstraction.

    Note

    It is the caller’s responsibility to call performFetch() on the created NSFetchedResultsController.

    Declaration

    Swift

    @nonobjc
    public func createFetchedResultsController<D>(_ from: From<D>, _ fetchClauses: FetchClause...) -> NSFetchedResultsController<D> where D : NSManagedObject

    Parameters

    from

    a From clause indicating the entity type

    fetchClauses

    a series of FetchClause instances for fetching the object list. Accepts Where, OrderBy, and Tweak clauses.

    Return Value

    an NSFetchedResultsController that observes the UnsafeDataTransaction

  • Utility for creating an NSFetchedResultsController from the UnsafeDataTransaction. This is useful when an NSFetchedResultsController is preferred over the overhead of ListMonitors abstraction.

    Note

    It is the caller’s responsibility to call performFetch() on the created NSFetchedResultsController.

    Declaration

    Swift

    @nonobjc
    public func createFetchedResultsController<D>(_ from: From<D>, _ fetchClauses: [FetchClause]) -> NSFetchedResultsController<D> where D : NSManagedObject

    Parameters

    from

    a From clause indicating the entity type

    fetchClauses

    a series of FetchClause instances for fetching the object list. Accepts Where, OrderBy, and Tweak clauses.

    Return Value

    an NSFetchedResultsController that observes the UnsafeDataTransaction