-
Reactive extension for
CoreStore.DataStack‘saddStorage(...)API. Asynchronously adds aStorageInterfaceto the stack.dataStack.reactive .addStorage( InMemoryStore(configuration: "Config1") ) .sink( receiveCompletion: { result in // ... }, receiveValue: { storage in // ... } ) .store(in: &cancellables)Declaration
Swift
public func addStorage<T: StorageInterface>( _ storage: T ) -> Future<T, CoreStoreError>Parameters
storagethe storage
Return Value
A
Futurethat emits aStorageInterfaceinstance added to theDataStack. Note that theStorageInterfaceevent value may not always be the same instance as the parameter argument if a previousStorageInterfacewas already added at the same URL and with the same configuration. -
Reactive extension for
CoreStore.DataStack‘saddStorage(...)API. Asynchronously adds aLocalStorageto the stack. Migrations are also initiated by default. The event emitsMigrationProgressenumvalues.dataStack.reactive .addStorage( SQLiteStore( fileName: "core_data.sqlite", configuration: "Config1" ) ) .sink( receiveCompletion: { result in // ... }, receiveValue: { (progress) in print("\(round(progress.fractionCompleted * 100)) %") // 0.0 ~ 1.0 } ) .store(in: &cancellables)Declaration
Swift
public func addStorage<T>(_ storage: T) -> DataStack.AddStoragePublisher<T> where T : LocalStorageParameters
storagethe local storage
Return Value
A
DataStack.AddStoragePublisherthat emits aMigrationProgressvalue with metadata for migration progress. Note that theLocalStorageevent value may not always be the same instance as the parameter argument if a previousLocalStoragewas already added at the same URL and with the same configuration. -
Reactive extension for
CoreStore.DataStack‘simportObject(...)API. Creates anImportableObjectby importing from the specified import source. The event value will be the object instance correctly associated for theDataStack.dataStack.reactive .importObject( Into<Person>(), source: ["name": "John"] ) .sink( receiveCompletion: { result in // ... }, receiveValue: { (person) in XCTAssertNotNil(person) // ... } ) .store(in: &cancellables)Declaration
Swift
public func importObject<O: DynamicObject & ImportableObject>( _ into: Into<O>, source: O.ImportSource ) -> Future<O?, CoreStoreError>Parameters
intoan
Intoclause specifying the entity typesourcethe object to import values from
Return Value
A
Futurethat publishes the imported object. The event value, if notnil, will be the object instance correctly associated for theDataStack. -
Reactive extension for
CoreStore.DataStack‘simportObject(...)API. Updates an existingImportableObjectby importing values from the specified import source. The event value will be the object instance correctly associated for theDataStack.let existingPerson: Person = // ... dataStack.reactive .importObject( existingPerson, source: ["name": "John", "age": 30] ) .sink( receiveCompletion: { result in // ... }, receiveValue: { (person) in XCTAssertEqual(person?.age, 30) // ... } ) .store(in: &cancellables)Declaration
Swift
public func importObject<O: DynamicObject & ImportableObject>( _ object: O, source: O.ImportSource ) -> Future<O?, CoreStoreError>Parameters
objectthe object to update
sourcethe object to import values from
Return Value
A
Futurethat publishes the imported object. The event value, if notnil, will be the object instance correctly associated for theDataStack. -
Reactive extension for
CoreStore.DataStack‘simportUniqueObject(...)API. Updates an existingImportableUniqueObjector creates a new instance by importing from the specified import source. The event value will be the object instance correctly associated for theDataStack.dataStack.reactive .importUniqueObject( Into<Person>(), source: ["name": "John", "age": 30] ) .sink( receiveCompletion: { result in // ... }, receiveValue: { (person) in XCTAssertEqual(person?.age, 30) // ... } ) .store(in: &cancellables)Declaration
Swift
public func importUniqueObject<O: DynamicObject & ImportableUniqueObject>( _ into: Into<O>, source: O.ImportSource ) -> Future<O?, CoreStoreError>Parameters
intoan
Intoclause specifying the entity typesourcethe object to import values from
Return Value
A
Futurefor the imported object. The event value, if notnil, will be the object instance correctly associated for theDataStack. -
Reactive extension for
CoreStore.DataStack‘simportUniqueObjects(...)API. Updates existingImportableUniqueObjects or creates them by importing from the specified array of import sources.ImportableUniqueObjectmethods are called on the objects in the same order as they are in thesourceArray, and are returned in an array with that same order. The event values will be object instances correctly associated for theDataStack.dataStack.reactive .importUniqueObjects( Into<Person>(), sourceArray: [ ["name": "John"], ["name": "Bob"], ["name": "Joe"] ] ) .sink( receiveCompletion: { result in // ... }, receiveValue: { (people) in XCTAssertEqual(people?.count, 3) // ... } ) .store(in: &cancellables)Warning
IfsourceArraycontains multiple import sources with same ID, no merging will occur and ONLY THE LAST duplicate will be imported.Declaration
Swift
public func importUniqueObjects<O: DynamicObject & ImportableUniqueObject, S: Sequence>( _ into: Into<O>, sourceArray: S, preProcess: @escaping (_ mapping: [O.UniqueIDType: O.ImportSource]) throws -> [O.UniqueIDType: O.ImportSource] = { $0 } ) -> Future<[O], CoreStoreError> where S.Iterator.Element == O.ImportSourceParameters
intoan
Intoclause specifying the entity typesourceArraythe array of objects to import values from
preProcessa closure that lets the caller tweak the internal
UniqueIDType-to-ImportSourcemapping to be used for importing. Callers can remove from/add to/updatemappingand return the updated array from the closure.Return Value
A
Futurefor the imported objects. The event values will be the object instances correctly associated for theDataStack. -
Reactive extension for
CoreStore.DataStack‘sperform(asynchronous:...)API. Performs a transaction asynchronously whereNSManagedObjectcreates, updates, and deletes can be made. The changes are commited automatically after thetaskclosure returns. The event value will be the value returned from thetaskclosure. Any errors thrown from inside thetaskwill be wrapped in aCoreStoreErrorand reported to the completion.failure. To cancel/rollback changes, calltransaction.cancel(), which throws aCoreStoreError.userCancelled.dataStack.reactive .perform( asynchronous: { (transaction) -> (inserted: Set<NSManagedObject>, deleted: Set<NSManagedObject>) in // ... return ( transaction.insertedObjects(), transaction.deletedObjects() ) } ) .sink( receiveCompletion: { result in // ... }, receiveValue: { value in let inserted = dataStack.fetchExisting(value0.inserted) let deleted = dataStack.fetchExisting(value0.deleted) // ... } ) .store(in: &cancellables)Declaration
Swift
public func perform<Output>( _ asynchronous: @escaping (AsynchronousDataTransaction) throws -> Output ) -> Future<Output, CoreStoreError>Parameters
taskthe asynchronous closure where creates, updates, and deletes can be made to the transaction. Transaction blocks are executed serially in a background queue, and all changes are made from a concurrent
NSManagedObjectContext.Return Value
A
Futurewhose event value be the value returned from thetaskclosure.
View on GitHub
ReactiveNamespace Structure Reference