DataStack
public final class DataStack : Equatable
extension DataStack: CustomDebugStringConvertible, CoreStoreDebugStringConvertible
extension DataStack: FetchableSource, QueryableSource
The DataStack
encapsulates the data model for the Core Data stack. Each DataStack
can have multiple data stores, usually specified as a “Configuration” in the model editor. Behind the scenes, the DataStack manages its own NSPersistentStoreCoordinator
, a root NSManagedObjectContext
for disk saves, and a shared NSManagedObjectContext
designed as a read-only model interface for NSManagedObjects
.
-
The resolved application name, used by the
DataStack
as the default Xcode model name (.xcdatamodel filename) if not explicitly provided.Declaration
Swift
public static let applicationName: String
-
Convenience initializer for
DataStack
that creates aSchemaHistory
from the model with the specifiedmodelName
in the specifiedbundle
.Declaration
Swift
public convenience init( xcodeModelName: XcodeDataModelFileName = DataStack.applicationName, bundle: Bundle = Bundle.main, migrationChain: MigrationChain = nil )
Parameters
xcodeModelName
the name of the (.xcdatamodeld) model file. If not specified, the application name (CFBundleName) will be used if it exists, or “CoreData” if it the bundle name was not set (e.g. in Unit Tests).
bundle
an optional bundle to load .xcdatamodeld models from. If not specified, the main bundle will be used.
migrationChain
the
MigrationChain
that indicates the sequence of model versions to be used as the order for progressive migrations. If not specified, will default to a non-migrating data stack. -
Convenience initializer for
DataStack
that creates aSchemaHistory
from a list ofDynamicSchema
versions.CoreStoreDefaults.dataStack = DataStack( XcodeDataModelSchema(modelName: "MyModelV1"), CoreStoreSchema( modelVersion: "MyModelV2", entities: [ Entity<Animal>("Animal"), Entity<Person>("Person") ] ), migrationChain: ["MyModelV1", "MyModelV2"] )
Declaration
Swift
public convenience init( _ schema: DynamicSchema, _ otherSchema: DynamicSchema..., migrationChain: MigrationChain = nil )
Parameters
schema
an instance of
DynamicSchema
otherSchema
a list of other
DynamicSchema
instances that represent present/previous/future model versions, in any ordermigrationChain
the
MigrationChain
that indicates the sequence of model versions to be used as the order for progressive migrations. If not specified, will default to a non-migrating data stack. -
Initializes a
DataStack
from aSchemaHistory
instance.CoreStoreDefaults.dataStack = DataStack( schemaHistory: SchemaHistory( XcodeDataModelSchema(modelName: "MyModelV1"), CoreStoreSchema( modelVersion: "MyModelV2", entities: [ Entity<Animal>("Animal"), Entity<Person>("Person") ] ), migrationChain: ["MyModelV1", "MyModelV2"] ) )
Declaration
Swift
public required init( schemaHistory: SchemaHistory )
Parameters
schemaHistory
the
SchemaHistory
for the stack -
Returns the
DataStack
‘s current model version.StorageInterface
s added to the stack will be migrated to this version.Declaration
Swift
public var modelVersion: String { get }
-
Returns the
DataStack
‘s current model schema.StorageInterface
s added to the stack will be migrated to this version.Declaration
Swift
public var modelSchema: DynamicSchema { get }
-
Returns the entity name-to-class type mapping from the
DataStack
‘s model.Declaration
Swift
public func entityTypesByName( for type: NSManagedObject.Type ) -> [EntityName: NSManagedObject.Type]
-
Returns the entity name-to-class type mapping from the
DataStack
‘s model.Declaration
Swift
public func entityTypesByName( for type: CoreStoreObject.Type ) -> [EntityName: CoreStoreObject.Type]
-
Returns the
NSEntityDescription
for the specifiedNSManagedObject
subclass.Declaration
Swift
public func entityDescription( for type: NSManagedObject.Type ) -> NSEntityDescription?
-
Returns the
NSEntityDescription
for the specifiedCoreStoreObject
subclass.Declaration
Swift
public func entityDescription( for type: CoreStoreObject.Type ) -> NSEntityDescription?
-
Returns the
NSManagedObjectID
for the specified object URI if it exists in the persistent store.Declaration
Swift
public func objectID( forURIRepresentation url: URL ) -> NSManagedObjectID?
-
Creates an
SQLiteStore
with default parameters and adds it to the stack. This method blocks until completion.try dataStack.addStorageAndWait()
Throws
aCoreStoreError
value indicating the failureDeclaration
Swift
@discardableResult public func addStorageAndWait() throws -> SQLiteStore
Return Value
the local SQLite storage added to the stack
-
Adds a
StorageInterface
to the stack and blocks until completion.try dataStack.addStorageAndWait(InMemoryStore(configuration: "Config1"))
Throws
aCoreStoreError
value indicating the failureDeclaration
Swift
@discardableResult public func addStorageAndWait<T: StorageInterface>( _ storage: T ) throws -> T
Parameters
storage
the
StorageInterface
Return Value
the
StorageInterface
added to the stack -
Adds a
LocalStorage
to the stack and blocks until completion.try dataStack.addStorageAndWait(SQLiteStore(configuration: "Config1"))
Throws
aCoreStoreError
value indicating the failureDeclaration
Swift
@discardableResult public func addStorageAndWait<T: LocalStorage>( _ storage: T ) throws -> T
Parameters
storage
the local storage
Return Value
the local storage added to the stack. Note that this may not always be the same instance as the parameter argument if a previous
LocalStorage
was already added at the same URL and with the same configuration. -
Prepares deinitializing the
DataStack
by removing all persistent stores. This is not necessary, but can help silence SQLite warnings when actively releasing and recreatingDataStack
s.Declaration
Swift
public func unsafeRemoveAllPersistentStores( completion: @escaping () -> Void = {} )
Parameters
completion
the closure to execute after all persistent stores are removed
-
Prepares deinitializing the
DataStack
by removing all persistent stores. This is not necessary, but can help silence SQLite warnings when actively releasing and recreatingDataStack
s.Declaration
Swift
public func unsafeRemoveAllPersistentStoresAndWait()
-
Allow external libraries to store custom data in the
DataStack
. App code should rarely have a need for this.enum Static { static var myDataKey: Void? } CoreStoreDefaults.dataStack.userInfo[&Static.myDataKey] = myObject
Important
Do not use this method to store thread-sensitive data.Declaration
Swift
public let userInfo: UserInfo
-
Declaration
Swift
public static func == (lhs: DataStack, rhs: DataStack) -> Bool
-
Declaration
Swift
public var debugDescription: String { get }
-
Swift concurrency utilities for the
DataStack
are exposed through this namespaceDeclaration
Swift
public var async: DataStack.AsyncNamespace { get }
-
Creates an
ObjectPublisher
for the specifiedDynamicObject
. Multiple objects may then register themselves to be notified when changes are made to theDynamicObject
.Declaration
Swift
public func publishObject<O>(_ object: O) -> ObjectPublisher<O> where O : DynamicObject
Parameters
object
the
DynamicObject
to observe changes fromReturn Value
an
ObjectPublisher
that broadcasts changes toobject
-
Creates an
ObjectPublisher
for aDynamicObject
with the specifiedObjectID
. Multiple objects may then register themselves to be notified when changes are made to theDynamicObject
.Declaration
Swift
public func publishObject<O>(_ objectID: O.ObjectID) -> ObjectPublisher<O> where O : DynamicObject
Parameters
objectID
the
ObjectID
of the object to observe changes fromReturn Value
an
ObjectPublisher
that broadcasts changes toobject
-
Creates a
ListPublisher
that satisfy the specifiedFetchChainableBuilderType
built from a chain of clauses.let listPublisher = dataStack.listPublisher( From<MyPersonEntity>() .where(\.age > 18) .orderBy(.ascending(\.age)) )
Multiple objects may then register themselves to be notified when changes are made to the fetched results.
listPublisher.addObserver(self) { (listPublisher) in // handle changes }
Declaration
Swift
public func publishList<B>(_ clauseChain: B) -> ListPublisher<B.ObjectType> where B : FetchChainableBuilderType
Parameters
clauseChain
a
FetchChainableBuilderType
built from a chain of clausesReturn Value
a
ListPublisher
that broadcasts changes to the fetched results -
Creates a
ListPublisher
for a sectioned list that satisfy the specifiedFetchChainableBuilderType
built from a chain of clauses.let listPublisher = dataStack.listPublisher( From<MyPersonEntity>() .sectionBy(\.age, { "\($0!) years old" }) .where(\.age > 18) .orderBy(.ascending(\.age)) )
Multiple objects may then register themselves to be notified when changes are made to the fetched results.
listPublisher.addObserver(self) { (listPublisher) in // handle changes }
Declaration
Swift
public func publishList<B>(_ clauseChain: B) -> ListPublisher<B.ObjectType> where B : SectionMonitorBuilderType
Parameters
clauseChain
a
SectionMonitorBuilderType
built from a chain of clausesReturn Value
a
ListPublisher
that broadcasts changes to the fetched results -
Creates a
ListPublisher
for the specifiedFrom
andFetchClause
s. Multiple objects may then register themselves to be notified when changes are made to the fetched results.Declaration
Swift
public func publishList<O>(_ from: From<O>, _ fetchClauses: FetchClause...) -> ListPublisher<O> where O : DynamicObject
Parameters
from
a
From
clause indicating the entity typefetchClauses
a series of
FetchClause
instances for fetching the object list. AcceptsWhere
,OrderBy
, andTweak
clauses.Return Value
a
ListPublisher
that broadcasts changes to the fetched results -
Creates a
ListPublisher
for the specifiedFrom
andFetchClause
s. Multiple objects may then register themselves to be notified when changes are made to the fetched results.Declaration
Swift
public func publishList<O>(_ from: From<O>, _ fetchClauses: [FetchClause]) -> ListPublisher<O> where O : DynamicObject
Parameters
from
a
From
clause indicating the entity typefetchClauses
a series of
FetchClause
instances for fetching the object list. AcceptsWhere
,OrderBy
, andTweak
clauses.Return Value
a
ListPublisher
that broadcasts changes to the fetched results -
Creates a
ListPublisher
for a sectioned list that satisfy the fetch clauses. Multiple objects may then register themselves to be notified when changes are made to the fetched results.Declaration
Swift
public func publishList<O>(_ from: From<O>, _ sectionBy: SectionBy<O>, _ fetchClauses: FetchClause...) -> ListPublisher<O> where O : DynamicObject
Parameters
from
a
From
clause indicating the entity typesectionBy
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. AcceptsWhere
,OrderBy
, andTweak
clauses.Return Value
a
ListPublisher
that broadcasts changes to the fetched results -
Creates a
ListPublisher
for a sectioned list that satisfy the fetch clauses. Multiple objects may then register themselves to be notified when changes are made to the fetched results.Declaration
Swift
public func publishList<O>(_ from: From<O>, _ sectionBy: SectionBy<O>, _ fetchClauses: [FetchClause]) -> ListPublisher<O> where O : DynamicObject
Parameters
from
a
From
clause indicating the entity typesectionBy
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. AcceptsWhere
,OrderBy
, andTweak
clauses.Return Value
a
ListPublisher
that broadcasts changes to the fetched results -
Asynchronously adds a
StorageInterface
to the stack. Migrations are also initiated by default.dataStack.addStorage( InMemoryStore(configuration: "Config1"), completion: { result in switch result { case .success(let storage): // ... case .failure(let error): // ... } } )
Declaration
Swift
public func addStorage<T>(_ storage: T, completion: @escaping (SetupResult<T>) -> Void) where T : StorageInterface
Parameters
storage
the storage
completion
the closure to be executed on the main queue when the process completes, either due to success or failure. The closure’s
SetupResult
argument indicates the result. Note that theStorageInterface
associated to theSetupResult.success
may not always be the same instance as the parameter argument if a previousStorageInterface
was already added at the same URL and with the same configuration. -
Asynchronously adds a
LocalStorage
to the stack. Migrations are also initiated by default.let migrationProgress = dataStack.addStorage( SQLiteStore(fileName: "core_data.sqlite", configuration: "Config1"), completion: { result in switch result { case .success(let storage): // ... case .failure(let error): // ... } } )
Declaration
Swift
public func addStorage<T>(_ storage: T, completion: @escaping (SetupResult<T>) -> Void) -> Progress? where T : LocalStorage
Parameters
storage
the local storage
completion
the closure to be executed on the main queue when the process completes, either due to success or failure. The closure’s
SetupResult
argument indicates the result. Note that theLocalStorage
associated to theSetupResult.success
may not always be the same instance as the parameter argument if a previousLocalStorage
was already added at the same URL and with the same configuration.Return Value
a
Progress
instance if a migration has started, ornil
if either no migrations are required or if a failure occured. -
Migrates a local storage to match the
DataStack
‘s managed object model version. This method does NOT add the migrated store to the data stack.Throws
aCoreStoreError
value indicating the failureDeclaration
Swift
public func upgradeStorageIfNeeded<T>(_ storage: T, completion: @escaping (MigrationResult) -> Void) throws -> Progress? where T : LocalStorage
Parameters
storage
the local storage
completion
the closure to be executed on the main queue when the migration completes, either due to success or failure. The closure’s
MigrationResult
argument indicates the result.Return Value
a
Progress
instance if a migration has started, ornil
is no migrations are required -
Checks the migration steps required for the storage to match the
DataStack
‘s managed object model version.Throws
aCoreStoreError
value indicating the failureDeclaration
Swift
public func requiredMigrationsForStorage<T>(_ storage: T) throws -> [MigrationType] where T : LocalStorage
Parameters
storage
the local storage
Return Value
a
MigrationType
array indicating the migration steps required for the store, or an empty array if the file does not exist yet. Otherwise, an error is thrown if either inspection of the store failed, or if no mapping model was found/inferred. -
Creates an
ObjectMonitor
for the specifiedDynamicObject
. MultipleObjectObserver
s may then register themselves to be notified when changes are made to theDynamicObject
.Declaration
Swift
public func monitorObject<O>(_ object: O) -> ObjectMonitor<O> where O : DynamicObject
Parameters
object
the
DynamicObject
to observe changes fromReturn Value
an
ObjectMonitor
that monitors changes toobject
-
Creates a
ListMonitor
for a list ofDynamicObject
s that satisfy the specified fetch clauses. MultipleListObserver
s may then register themselves to be notified when changes are made to the list.Declaration
Swift
public func monitorList<O>(_ from: From<O>, _ fetchClauses: FetchClause...) -> ListMonitor<O> where O : DynamicObject
Parameters
from
a
From
clause indicating the entity typefetchClauses
a series of
FetchClause
instances for fetching the object list. AcceptsWhere
,OrderBy
, andTweak
clauses.Return Value
a
ListMonitor
instance that monitors changes to the list -
Creates a
ListMonitor
for a list ofDynamicObject
s that satisfy the specified fetch clauses. MultipleListObserver
s may then register themselves to be notified when changes are made to the list.Declaration
Swift
public func monitorList<O>(_ from: From<O>, _ fetchClauses: [FetchClause]) -> ListMonitor<O> where O : DynamicObject
Parameters
from
a
From
clause indicating the entity typefetchClauses
a series of
FetchClause
instances for fetching the object list. AcceptsWhere
,OrderBy
, andTweak
clauses.Return Value
a
ListMonitor
instance that monitors changes to the list -
Creates a
ListMonitor
for a list ofDynamicObject
s that satisfy the specifiedFetchChainableBuilderType
built from a chain of clauses.let monitor = dataStack.monitorList( From<MyPersonEntity>() .where(\.age > 18) .orderBy(.ascending(\.age)) )
Declaration
Swift
public func monitorList<B>(_ clauseChain: B) -> ListMonitor<B.ObjectType> where B : FetchChainableBuilderType
Parameters
clauseChain
a
FetchChainableBuilderType
built from a chain of clausesReturn Value
a
ListMonitor
for a list ofDynamicObject
s that satisfy the specifiedFetchChainableBuilderType
-
Asynchronously creates a
ListMonitor
for a list ofDynamicObject
s that satisfy the specified fetch clauses. MultipleListObserver
s may then register themselves to be notified when changes are made to the list. SinceNSFetchedResultsController
greedily locks the persistent store on initial fetch, you may prefer this method instead of the synchronous counterpart to avoid deadlocks while background updates/saves are being executed.Declaration
Swift
public func monitorList<O>(createAsynchronously: @escaping (ListMonitor<O>) -> Void, _ from: From<O>, _ fetchClauses: FetchClause...) where O : DynamicObject
Parameters
createAsynchronously
the closure that receives the created
ListMonitor
instancefrom
a
From
clause indicating the entity typefetchClauses
a series of
FetchClause
instances for fetching the object list. AcceptsWhere
,OrderBy
, andTweak
clauses. -
Asynchronously creates a
ListMonitor
for a list ofDynamicObject
s that satisfy the specified fetch clauses. MultipleListObserver
s may then register themselves to be notified when changes are made to the list. SinceNSFetchedResultsController
greedily locks the persistent store on initial fetch, you may prefer this method instead of the synchronous counterpart to avoid deadlocks while background updates/saves are being executed.Declaration
Swift
public func monitorList<O>(createAsynchronously: @escaping (ListMonitor<O>) -> Void, _ from: From<O>, _ fetchClauses: [FetchClause]) where O : DynamicObject
Parameters
createAsynchronously
the closure that receives the created
ListMonitor
instancefrom
a
From
clause indicating the entity typefetchClauses
a series of
FetchClause
instances for fetching the object list. AcceptsWhere
,OrderBy
, andTweak
clauses. -
Asynchronously creates a
ListMonitor
for a list ofDynamicObject
s that satisfy the specifiedFetchChainableBuilderType
built from a chain of clauses. SinceNSFetchedResultsController
greedily locks the persistent store on initial fetch, you may prefer this method instead of the synchronous counterpart to avoid deadlocks while background updates/saves are being executed.dataStack.monitorList( createAsynchronously: { (monitor) in self.monitor = monitor }, From<MyPersonEntity>() .where(\.age > 18) .orderBy(.ascending(\.age)) )
Declaration
Swift
public func monitorList<B>(createAsynchronously: @escaping (ListMonitor<B.ObjectType>) -> Void, _ clauseChain: B) where B : FetchChainableBuilderType
Parameters
createAsynchronously
the closure that receives the created
ListMonitor
instanceclauseChain
a
FetchChainableBuilderType
built from a chain of clauses -
Creates a
ListMonitor
for a sectioned list ofDynamicObject
s that satisfy the specified fetch clauses. MultipleListObserver
s may then register themselves to be notified when changes are made to the list.Declaration
Swift
public func monitorSectionedList<O>(_ from: From<O>, _ sectionBy: SectionBy<O>, _ fetchClauses: FetchClause...) -> ListMonitor<O> where O : DynamicObject
Parameters
from
a
From
clause indicating the entity typesectionBy
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. AcceptsWhere
,OrderBy
, andTweak
clauses.Return Value
a
ListMonitor
instance that monitors changes to the list -
Creates a
ListMonitor
for a sectioned list ofDynamicObject
s that satisfy the specified fetch clauses. MultipleListObserver
s may then register themselves to be notified when changes are made to the list.Declaration
Swift
public func monitorSectionedList<O>(_ from: From<O>, _ sectionBy: SectionBy<O>, _ fetchClauses: [FetchClause]) -> ListMonitor<O> where O : DynamicObject
Parameters
from
a
From
clause indicating the entity typesectionBy
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. AcceptsWhere
,OrderBy
, andTweak
clauses.Return Value
a
ListMonitor
instance that monitors changes to the list -
Creates a
ListMonitor
for a sectioned list ofDynamicObject
s that satisfy the specifiedSectionMonitorBuilderType
built from a chain of clauses.let monitor = dataStack.monitorSectionedList( From<MyPersonEntity>() .sectionBy(\.age, { "\($0!) years old" }) .where(\.age > 18) .orderBy(.ascending(\.age)) )
Declaration
Swift
public func monitorSectionedList<B>(_ clauseChain: B) -> ListMonitor<B.ObjectType> where B : SectionMonitorBuilderType
Parameters
clauseChain
a
SectionMonitorBuilderType
built from a chain of clausesReturn Value
a
ListMonitor
for a list ofDynamicObject
s that satisfy the specifiedSectionMonitorBuilderType
-
Asynchronously creates a
ListMonitor
for a sectioned list ofDynamicObject
s that satisfy the specified fetch clauses. MultipleListObserver
s may then register themselves to be notified when changes are made to the list. SinceNSFetchedResultsController
greedily locks the persistent store on initial fetch, you may prefer this method instead of the synchronous counterpart to avoid deadlocks while background updates/saves are being executed.Declaration
Swift
public func monitorSectionedList<O>(createAsynchronously: @escaping (ListMonitor<O>) -> Void, _ from: From<O>, _ sectionBy: SectionBy<O>, _ fetchClauses: FetchClause...) where O : DynamicObject
Parameters
createAsynchronously
the closure that receives the created
ListMonitor
instancefrom
a
From
clause indicating the entity typesectionBy
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. AcceptsWhere
,OrderBy
, andTweak
clauses. -
Asynchronously creates a
ListMonitor
for a sectioned list ofDynamicObject
s that satisfy the specified fetch clauses. MultipleListObserver
s may then register themselves to be notified when changes are made to the list. SinceNSFetchedResultsController
greedily locks the persistent store on initial fetch, you may prefer this method instead of the synchronous counterpart to avoid deadlocks while background updates/saves are being executed.Declaration
Swift
public func monitorSectionedList<O>(createAsynchronously: @escaping (ListMonitor<O>) -> Void, _ from: From<O>, _ sectionBy: SectionBy<O>, _ fetchClauses: [FetchClause]) where O : DynamicObject
Parameters
createAsynchronously
the closure that receives the created
ListMonitor
instancefrom
a
From
clause indicating the entity typesectionBy
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. AcceptsWhere
,OrderBy
, andTweak
clauses. -
Asynchronously creates a
ListMonitor
for a sectioned list ofDynamicObject
s that satisfy the specifiedSectionMonitorBuilderType
built from a chain of clauses.dataStack.monitorSectionedList( createAsynchronously: { (monitor) in self.monitor = monitor }, From<MyPersonEntity>() .sectionBy(\.age, { "\($0!) years old" }) .where(\.age > 18) .orderBy(.ascending(\.age)) )
Declaration
Swift
public func monitorSectionedList<B>(createAsynchronously: @escaping (ListMonitor<B.ObjectType>) -> Void, _ clauseChain: B) where B : SectionMonitorBuilderType
Parameters
createAsynchronously
the closure that receives the created
ListMonitor
instanceclauseChain
a
SectionMonitorBuilderType
built from a chain of clauses
-
Fetches the
DynamicObject
instance in theDataStack
‘s context from a reference created from a transaction or from a different managed object context.Declaration
Swift
public func fetchExisting<O>(_ object: O) -> O? where O : DynamicObject
Parameters
object
a reference to the object created/fetched outside the
DataStack
Return Value
the
DynamicObject
instance if the object exists in theDataStack
, ornil
if not found. -
Fetches the
DynamicObject
instance in theDataStack
‘s context from anNSManagedObjectID
.Declaration
Swift
public func fetchExisting<O>(_ objectID: NSManagedObjectID) -> O? where O : DynamicObject
Parameters
objectID
the
NSManagedObjectID
for the objectReturn Value
the
DynamicObject
instance if the object exists in theDataStack
, ornil
if not found. -
Fetches the
DynamicObject
instances in theDataStack
‘s context from references created from a transaction or from a different managed object context.Declaration
Swift
public func fetchExisting<O, S>(_ objects: S) -> [O] where O : DynamicObject, O == S.Element, S : Sequence
Parameters
objects
an array of
DynamicObject
s created/fetched outside theDataStack
Return Value
the
DynamicObject
array for objects that exists in theDataStack
-
Fetches the
DynamicObject
instances in theDataStack
‘s context from a list ofNSManagedObjectID
.Declaration
Swift
public func fetchExisting<O, S>(_ objectIDs: S) -> [O] where O : DynamicObject, S : Sequence, S.Element == NSManagedObjectID
Parameters
objectIDs
the
NSManagedObjectID
array for the objectsReturn Value
the
DynamicObject
array for objects that exists in theDataStack
-
Fetches the first
DynamicObject
instance that satisfies the specifiedFetchClause
s. AcceptsWhere
,OrderBy
, andTweak
clauses.Throws
CoreStoreError.persistentStoreNotFound
if the specified entity could not be found in any store’s schema.Declaration
Swift
public func fetchOne<O>(_ from: From<O>, _ fetchClauses: FetchClause...) throws -> O? where O : DynamicObject
Parameters
from
a
From
clause indicating the entity typefetchClauses
a series of
FetchClause
instances for the fetch request. AcceptsWhere
,OrderBy
, andTweak
clauses.Return Value
the first
DynamicObject
instance that satisfies the specifiedFetchClause
s, ornil
if no match was found -
Fetches the first
DynamicObject
instance that satisfies the specifiedFetchClause
s. AcceptsWhere
,OrderBy
, andTweak
clauses.Throws
CoreStoreError.persistentStoreNotFound
if the specified entity could not be found in any store’s schema.Declaration
Swift
public func fetchOne<O>(_ from: From<O>, _ fetchClauses: [FetchClause]) throws -> O? where O : DynamicObject
Parameters
from
a
From
clause indicating the entity typefetchClauses
a series of
FetchClause
instances for the fetch request. AcceptsWhere
,OrderBy
, andTweak
clauses.Return Value
the first
DynamicObject
instance that satisfies the specifiedFetchClause
s, ornil
if no match was found -
Fetches the first
DynamicObject
instance that satisfies the specifiedFetchChainableBuilderType
built from a chain of clauses.let youngestTeen = dataStack.fetchOne( From<MyPersonEntity>() .where(\.age > 18) .orderBy(.ascending(\.age)) )
Throws
CoreStoreError.persistentStoreNotFound
if the specified entity could not be found in any store’s schema.Declaration
Swift
public func fetchOne<B>(_ clauseChain: B) throws -> B.ObjectType? where B : FetchChainableBuilderType
Parameters
clauseChain
a
FetchChainableBuilderType
built from a chain of clausesReturn Value
the first
DynamicObject
instance that satisfies the specifiedFetchChainableBuilderType
, ornil
if no match was found -
Fetches all
DynamicObject
instances that satisfy the specifiedFetchClause
s. AcceptsWhere
,OrderBy
, andTweak
clauses.Throws
CoreStoreError.persistentStoreNotFound
if the specified entity could not be found in any store’s schema.Declaration
Swift
public func fetchAll<O>(_ from: From<O>, _ fetchClauses: FetchClause...) throws -> [O] where O : DynamicObject
Parameters
from
a
From
clause indicating the entity typefetchClauses
a series of
FetchClause
instances for the fetch request. AcceptsWhere
,OrderBy
, andTweak
clauses.Return Value
all
DynamicObject
instances that satisfy the specifiedFetchClause
s, or an empty array if no match was found -
Fetches all
DynamicObject
instances that satisfy the specifiedFetchClause
s. AcceptsWhere
,OrderBy
, andTweak
clauses.Throws
CoreStoreError.persistentStoreNotFound
if the specified entity could not be found in any store’s schema.Declaration
Swift
public func fetchAll<O>(_ from: From<O>, _ fetchClauses: [FetchClause]) throws -> [O] where O : DynamicObject
Parameters
from
a
From
clause indicating the entity typefetchClauses
a series of
FetchClause
instances for the fetch request. AcceptsWhere
,OrderBy
, andTweak
clauses.Return Value
all
DynamicObject
instances that satisfy the specifiedFetchClause
s, or an empty array if no match was found -
Fetches all
DynamicObject
instances that satisfy the specifiedFetchChainableBuilderType
built from a chain of clauses.let people = dataStack.fetchAll( From<MyPersonEntity>() .where(\.age > 18) .orderBy(.ascending(\.age)) )
Throws
CoreStoreError.persistentStoreNotFound
if the specified entity could not be found in any store’s schema.Declaration
Swift
public func fetchAll<B>(_ clauseChain: B) throws -> [B.ObjectType] where B : FetchChainableBuilderType
Parameters
clauseChain
a
FetchChainableBuilderType
built from a chain of clausesReturn Value
all
DynamicObject
instances that satisfy the specifiedFetchChainableBuilderType
, or an empty array if no match was found -
Fetches the number of
DynamicObject
s that satisfy the specifiedFetchClause
s. AcceptsWhere
,OrderBy
, andTweak
clauses.Throws
CoreStoreError.persistentStoreNotFound
if the specified entity could not be found in any store’s schema.Declaration
Swift
public func fetchCount<O>(_ from: From<O>, _ fetchClauses: FetchClause...) throws -> Int where O : DynamicObject
Parameters
from
a
From
clause indicating the entity typefetchClauses
a series of
FetchClause
instances for the fetch request. AcceptsWhere
,OrderBy
, andTweak
clauses.Return Value
the number of
DynamicObject
s that satisfy the specifiedFetchClause
s -
Fetches the number of
DynamicObject
s that satisfy the specifiedFetchClause
s. AcceptsWhere
,OrderBy
, andTweak
clauses.Throws
CoreStoreError.persistentStoreNotFound
if the specified entity could not be found in any store’s schema.Declaration
Swift
public func fetchCount<O>(_ from: From<O>, _ fetchClauses: [FetchClause]) throws -> Int where O : DynamicObject
Parameters
from
a
From
clause indicating the entity typefetchClauses
a series of
FetchClause
instances for the fetch request. AcceptsWhere
,OrderBy
, andTweak
clauses.Return Value
the number of
DynamicObject
s that satisfy the specifiedFetchClause
s -
Fetches the number of
DynamicObject
s that satisfy the specifiedFetchChainableBuilderType
built from a chain of clauses.let numberOfAdults = dataStack.fetchCount( From<MyPersonEntity>() .where(\.age > 18) .orderBy(.ascending(\.age)) )
Throws
CoreStoreError.persistentStoreNotFound
if the specified entity could not be found in any store’s schema.Declaration
Swift
public func fetchCount<B>(_ clauseChain: B) throws -> Int where B : FetchChainableBuilderType
Parameters
clauseChain
a
FetchChainableBuilderType
built from a chain of clausesReturn Value
the number of
DynamicObject
s that satisfy the specifiedFetchChainableBuilderType
-
Fetches the
NSManagedObjectID
for the firstDynamicObject
that satisfies the specifiedFetchClause
s. AcceptsWhere
,OrderBy
, andTweak
clauses.Throws
CoreStoreError.persistentStoreNotFound
if the specified entity could not be found in any store’s schema.Declaration
Swift
public func fetchObjectID<O>(_ from: From<O>, _ fetchClauses: FetchClause...) throws -> NSManagedObjectID? where O : DynamicObject
Parameters
from
a
From
clause indicating the entity typefetchClauses
a series of
FetchClause
instances for the fetch request. AcceptsWhere
,OrderBy
, andTweak
clauses.Return Value
the
NSManagedObjectID
for the firstDynamicObject
that satisfies the specifiedFetchClause
s, ornil
if no match was found -
Fetches the
NSManagedObjectID
for the firstDynamicObject
that satisfies the specifiedFetchClause
s. AcceptsWhere
,OrderBy
, andTweak
clauses.Throws
CoreStoreError.persistentStoreNotFound
if the specified entity could not be found in any store’s schema.Declaration
Swift
public func fetchObjectID<O>(_ from: From<O>, _ fetchClauses: [FetchClause]) throws -> NSManagedObjectID? where O : DynamicObject
Parameters
from
a
From
clause indicating the entity typefetchClauses
a series of
FetchClause
instances for the fetch request. AcceptsWhere
,OrderBy
, andTweak
clauses.Return Value
the
NSManagedObjectID
for the firstDynamicObject
that satisfies the specifiedFetchClause
s, ornil
if no match was found -
Fetches the
NSManagedObjectID
for the firstDynamicObject
that satisfies the specifiedFetchChainableBuilderType
built from a chain of clauses.let youngestTeenID = dataStack.fetchObjectID( From<MyPersonEntity>() .where(\.age > 18) .orderBy(.ascending(\.age)) )
Throws
CoreStoreError.persistentStoreNotFound
if the specified entity could not be found in any store’s schema.Declaration
Swift
public func fetchObjectID<B>(_ clauseChain: B) throws -> NSManagedObjectID? where B : FetchChainableBuilderType
Parameters
clauseChain
a
FetchChainableBuilderType
built from a chain of clausesReturn Value
the
NSManagedObjectID
for the firstDynamicObject
that satisfies the specifiedFetchChainableBuilderType
, ornil
if no match was found -
Fetches the
NSManagedObjectID
for allDynamicObject
s that satisfy the specifiedFetchClause
s. AcceptsWhere
,OrderBy
, andTweak
clauses.Throws
CoreStoreError.persistentStoreNotFound
if the specified entity could not be found in any store’s schema.Declaration
Swift
public func fetchObjectIDs<O>(_ from: From<O>, _ fetchClauses: FetchClause...) throws -> [NSManagedObjectID] where O : DynamicObject
Parameters
from
a
From
clause indicating the entity typefetchClauses
a series of
FetchClause
instances for the fetch request. AcceptsWhere
,OrderBy
, andTweak
clauses.Return Value
the
NSManagedObjectID
for allDynamicObject
s that satisfy the specifiedFetchClause
s, or an empty array if no match was found -
Fetches the
NSManagedObjectID
for allDynamicObject
s that satisfy the specifiedFetchClause
s. AcceptsWhere
,OrderBy
, andTweak
clauses.Throws
CoreStoreError.persistentStoreNotFound
if the specified entity could not be found in any store’s schema.Declaration
Swift
public func fetchObjectIDs<O>(_ from: From<O>, _ fetchClauses: [FetchClause]) throws -> [NSManagedObjectID] where O : DynamicObject
Parameters
from
a
From
clause indicating the entity typefetchClauses
a series of
FetchClause
instances for the fetch request. AcceptsWhere
,OrderBy
, andTweak
clauses.Return Value
the
NSManagedObjectID
for allDynamicObject
s that satisfy the specifiedFetchClause
s, or an empty array if no match was found -
Fetches the
NSManagedObjectID
for allDynamicObject
s that satisfy the specifiedFetchChainableBuilderType
built from a chain of clauses.let idsOfAdults = dataStack.fetchObjectIDs( From<MyPersonEntity>() .where(\.age > 18) .orderBy(.ascending(\.age)) )
Throws
CoreStoreError.persistentStoreNotFound
if the specified entity could not be found in any store’s schema.Declaration
Swift
public func fetchObjectIDs<B>(_ clauseChain: B) throws -> [NSManagedObjectID] where B : FetchChainableBuilderType
Parameters
clauseChain
a
FetchChainableBuilderType
built from a chain of clausesReturn Value
the
NSManagedObjectID
for allDynamicObject
s that satisfy the specifiedFetchChainableBuilderType
, or an empty array if no match was found
-
Queries aggregate values as specified by the
QueryClause
s. Requires at least aSelect
clause, and optionalWhere
,OrderBy
,GroupBy
, andTweak
clauses.A “query” differs from a “fetch” in that it only retrieves values already stored in the persistent store. As such, values from unsaved transactions or contexts will not be incorporated in the query result.
Throws
CoreStoreError.persistentStoreNotFound
if the specified entity could not be found in any store’s schema.Declaration
Swift
public func queryValue<O, U>(_ from: From<O>, _ selectClause: Select<O, U>, _ queryClauses: QueryClause...) throws -> U? where O : DynamicObject, U : QueryableAttributeType
Parameters
from
a
From
clause indicating the entity typeselectClause
a
Select<U>
clause indicating the properties to fetch, and with the generic type indicating the return type.queryClauses
a series of
QueryClause
instances for the query request. AcceptsWhere
,OrderBy
,GroupBy
, andTweak
clauses.Return Value
the result of the the query, or
nil
if no match was found. The type of the return value is specified by the generic type of theSelect<U>
parameter. -
Queries aggregate values as specified by the
QueryClause
s. Requires at least aSelect
clause, and optionalWhere
,OrderBy
,GroupBy
, andTweak
clauses.A “query” differs from a “fetch” in that it only retrieves values already stored in the persistent store. As such, values from unsaved transactions or contexts will not be incorporated in the query result.
Throws
CoreStoreError.persistentStoreNotFound
if the specified entity could not be found in any store’s schema.Declaration
Swift
public func queryValue<O, U>(_ from: From<O>, _ selectClause: Select<O, U>, _ queryClauses: [QueryClause]) throws -> U? where O : DynamicObject, U : QueryableAttributeType
Parameters
from
a
From
clause indicating the entity typeselectClause
a
Select<U>
clause indicating the properties to fetch, and with the generic type indicating the return type.queryClauses
a series of
QueryClause
instances for the query request. AcceptsWhere
,OrderBy
,GroupBy
, andTweak
clauses.Return Value
the result of the the query, or
nil
if no match was found. The type of the return value is specified by the generic type of theSelect<U>
parameter. -
Queries a property value or aggregate as specified by the
QueryChainableBuilderType
built from a chain of clauses.A “query” differs from a “fetch” in that it only retrieves values already stored in the persistent store. As such, values from unsaved transactions or contexts will not be incorporated in the query result.
let averageAdultAge = dataStack.queryValue( From<MyPersonEntity>() .select(Int.self, .average(\.age)) .where(\.age > 18) )
Throws
CoreStoreError.persistentStoreNotFound
if the specified entity could not be found in any store’s schema.Declaration
Swift
public func queryValue<B>(_ clauseChain: B) throws -> B.ResultType? where B : QueryChainableBuilderType, B.ResultType : QueryableAttributeType
Parameters
clauseChain
a
QueryChainableBuilderType
indicating the property/aggregate to fetch and the series of queries for the request.Return Value
the result of the the query as specified by the
QueryChainableBuilderType
, ornil
if no match was found. -
Queries a dictionary of attribute values as specified by the
QueryClause
s. Requires at least aSelect
clause, and optionalWhere
,OrderBy
,GroupBy
, andTweak
clauses.A “query” differs from a “fetch” in that it only retrieves values already stored in the persistent store. As such, values from unsaved transactions or contexts will not be incorporated in the query result.
Throws
CoreStoreError.persistentStoreNotFound
if the specified entity could not be found in any store’s schema.Declaration
Swift
public func queryAttributes<O>(_ from: From<O>, _ selectClause: Select<O, NSDictionary>, _ queryClauses: QueryClause...) throws -> [[String : Any]] where O : DynamicObject
Parameters
from
a
From
clause indicating the entity typeselectClause
a
Select<U>
clause indicating the properties to fetch, and with the generic type indicating the return type.queryClauses
a series of
QueryClause
instances for the query request. AcceptsWhere
,OrderBy
,GroupBy
, andTweak
clauses.Return Value
the result of the the query. The type of the return value is specified by the generic type of the
Select<U>
parameter. -
Queries a dictionary of attribute values as specified by the
QueryClause
s. Requires at least aSelect
clause, and optionalWhere
,OrderBy
,GroupBy
, andTweak
clauses.A “query” differs from a “fetch” in that it only retrieves values already stored in the persistent store. As such, values from unsaved transactions or contexts will not be incorporated in the query result.
Throws
CoreStoreError.persistentStoreNotFound
if the specified entity could not be found in any store’s schema.Declaration
Swift
public func queryAttributes<O>(_ from: From<O>, _ selectClause: Select<O, NSDictionary>, _ queryClauses: [QueryClause]) throws -> [[String : Any]] where O : DynamicObject
Parameters
from
a
From
clause indicating the entity typeselectClause
a
Select<U>
clause indicating the properties to fetch, and with the generic type indicating the return type.queryClauses
a series of
QueryClause
instances for the query request. AcceptsWhere
,OrderBy
,GroupBy
, andTweak
clauses.Return Value
the result of the the query. The type of the return value is specified by the generic type of the
Select<U>
parameter. -
Queries a dictionary of attribute values or as specified by the
QueryChainableBuilderType
built from a chain of clauses.A “query” differs from a “fetch” in that it only retrieves values already stored in the persistent store. As such, values from unsaved transactions or contexts will not be incorporated in the query result.
let results = dataStack.queryAttributes( From<MyPersonEntity>() .select( NSDictionary.self, .attribute(\.age, as: "age"), .count(\.age, as: "numberOfPeople") ) .groupBy(\.age) ) for dictionary in results! { let age = dictionary["age"] as! Int let count = dictionary["numberOfPeople"] as! Int print("There are \(count) people who are \(age) years old." }
Throws
CoreStoreError.persistentStoreNotFound
if the specified entity could not be found in any store’s schema.Declaration
Swift
public func queryAttributes<B>(_ clauseChain: B) throws -> [[String : Any]] where B : QueryChainableBuilderType, B.ResultType == NSDictionary
Parameters
clauseChain
a
QueryChainableBuilderType
indicating the properties to fetch and the series of queries for the request.Return Value
the result of the the query as specified by the
QueryChainableBuilderType
-
The internal
NSManagedObjectContext
managed by this instance. Using this context directly should typically be avoided, and is provided by CoreStore only for extremely specialized cases.Declaration
Swift
public func unsafeContext() -> NSManagedObjectContext
-
Combine utilities for the
DataStack
are exposed through this namespaceDeclaration
Swift
public var reactive: DataStack.ReactiveNamespace { get }
-
Performs a transaction asynchronously where
NSManagedObject
orCoreStoreObject
creates, updates, and deletes can be made. The changes are commited automatically after thetask
closure returns. On success, the value returned from closure will be the wrapped as.success(T)
in thecompletion
‘sResult<T>
. Any errors thrown from inside thetask
will be reported as.failure(CoreStoreError)
. To cancel/rollback changes, calltry transaction.cancel()
, which throws aCoreStoreError.userCancelled
.Declaration
Swift
public func perform<T>( asynchronous task: @escaping (_ transaction: AsynchronousDataTransaction) throws -> T, sourceIdentifier: Any? = nil, completion: @escaping (AsynchronousDataTransaction.Result<T>) -> Void )
Parameters
task
the 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
.sourceIdentifier
an optional value that identifies the source of this transaction. This identifier will be passed to the change notifications and callers can use it for custom handling that depends on the source.
completion
the closure executed after the save completes. The
Result
argument of the closure will either wrap the return value oftask
, or any uncaught errors thrown from withintask
. Cancelledtask
s will be indicated by.failure(error: CoreStoreError.userCancelled)
. Custom errors thrown by the user will be wrapped inCoreStoreError.userError(error: Error)
. -
Performs a transaction asynchronously where
NSManagedObject
orCoreStoreObject
creates, updates, and deletes can be made. The changes are commited automatically after thetask
closure returns. On success, the value returned from closure will be the argument of thesuccess
closure. Any errors thrown from inside thetask
will be wrapped in aCoreStoreError
and reported in thefailure
closure. To cancel/rollback changes, calltry transaction.cancel()
, which throws aCoreStoreError.userCancelled
.Declaration
Swift
public func perform<T>( asynchronous task: @escaping (_ transaction: AsynchronousDataTransaction) throws -> T, sourceIdentifier: Any? = nil, success: @escaping (T) -> Void, failure: @escaping (CoreStoreError) -> Void )
Parameters
task
the 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
.sourceIdentifier
an optional value that identifies the source of this transaction. This identifier will be passed to the change notifications and callers can use it for custom handling that depends on the source.
success
the closure executed after the save succeeds. The
T
argument of the closure will be the value returned fromtask
.failure
the closure executed if the save fails or if any errors are thrown within
task
. Cancelledtask
s will be indicated byCoreStoreError.userCancelled
. Custom errors thrown by the user will be wrapped inCoreStoreError.userError(error: Error)
. -
Performs a transaction synchronously where
NSManagedObject
orCoreStoreObject
creates, updates, and deletes can be made. The changes are commited automatically after thetask
closure returns. On success, the value returned from closure will be the return value ofperform(synchronous:)
. Any errors thrown from inside thetask
will be thrown fromperform(synchronous:)
. To cancel/rollback changes, calltry transaction.cancel()
, which throws aCoreStoreError.userCancelled
.Throws
aCoreStoreError
value indicating the failure. Cancelledtask
s will be indicated byCoreStoreError.userCancelled
. Custom errors thrown by the user will be wrapped inCoreStoreError.userError(error: Error)
.Declaration
Swift
public func perform<T>( synchronous task: ((_ transaction: SynchronousDataTransaction) throws -> T), waitForAllObservers: Bool = true, sourceIdentifier: Any? = nil ) throws -> T
Parameters
task
the synchronous non-escaping 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
.waitForAllObservers
When
true
, this method waits for all observers to be notified of the changes before returning. This results in more predictable data update order, but may risk triggering deadlocks. Whenfalse
, this method does not wait for observers to be notified of the changes before returning. This results in lower risk for deadlocks, but the updated data may not have been propagated to theDataStack
after returning. Defaults totrue
.sourceIdentifier
an optional value that identifies the source of this transaction. This identifier will be passed to the change notifications and callers can use it for custom handling that depends on the source.
Return Value
the value returned from
task
-
Begins a non-contiguous transaction where
NSManagedObject
orCoreStoreObject
creates, updates, and deletes can be made. This is useful for making temporary changes, such as partially filled forms.Declaration
Swift
public func beginUnsafe( supportsUndo: Bool = false, sourceIdentifier: Any? = nil ) -> UnsafeDataTransaction
Parameters
supportsUndo
undo()
,redo()
, androllback()
methods are only available when this parameter istrue
, otherwise those method will raise an exception. Defaults tofalse
. Note that turning on Undo support may heavily impact performance especially on iOS or watchOS where memory is limited.sourceIdentifier
an optional value that identifies the source of this transaction. This identifier will be passed to the change notifications and callers can use it for custom handling that depends on the source.
Return Value
a
UnsafeDataTransaction
instance where creates, updates, and deletes can be made. -
Refreshes all registered objects
NSManagedObject
s orCoreStoreObject
s in theDataStack
.Declaration
Swift
public func refreshAndMergeAllObjects()
-
A
Publisher
that emits aListSnapshot
whenever changes occur in theListPublisher
.See also
DataStack.reactive.addStorage(_:)Declaration
Swift
public struct AddStoragePublisher<Storage> : Publisher where Storage : LocalStorage
-
Utility for creating an
NSFetchedResultsController
from theDataStack
. This is useful when anNSFetchedResultsController
is preferred over the overhead ofListMonitor
s abstraction.Note
It is the caller’s responsibility to call
performFetch()
on the createdNSFetchedResultsController
.Declaration
Swift
@nonobjc public func createFetchedResultsController<O>(_ from: From<O>, _ sectionBy: SectionBy<O>, _ fetchClauses: FetchClause...) -> NSFetchedResultsController<O> where O : NSManagedObject
Parameters
from
a
From
clause indicating the entity typesectionBy
a
SectionBy
clause indicating the keyPath for the attribute to use when sorting the list into sectionsfetchClauses
a series of
FetchClause
instances for fetching the object list. AcceptsWhere
,OrderBy
, andTweak
clauses.Return Value
an
NSFetchedResultsController
that observes theDataStack
-
Utility for creating an
NSFetchedResultsController
from aDataStack
. This is useful when anNSFetchedResultsController
is preferred over the overhead ofListMonitor
s abstraction.Note
It is the caller’s responsibility to call
performFetch()
on the createdNSFetchedResultsController
.Declaration
Swift
@nonobjc public func createFetchedResultsController<O>(_ from: From<O>, _ sectionBy: SectionBy<O>, _ fetchClauses: [FetchClause]) -> NSFetchedResultsController<O> where O : NSManagedObject
Parameters
from
a
From
clause indicating the entity typesectionBy
a
SectionBy
clause indicating the keyPath for the attribute to use when sorting the list into sectionsfetchClauses
a series of
FetchClause
instances for fetching the object list. AcceptsWhere
,OrderBy
, andTweak
clauses.Return Value
an
NSFetchedResultsController
that observes theDataStack
-
Utility for creating an
NSFetchedResultsController
from theDataStack
. This is useful when anNSFetchedResultsController
is preferred over the overhead ofListMonitor
s abstraction.Note
It is the caller’s responsibility to call
performFetch()
on the createdNSFetchedResultsController
.Declaration
Swift
@nonobjc public func createFetchedResultsController<O>(_ from: From<O>, _ fetchClauses: FetchClause...) -> NSFetchedResultsController<O> where O : NSManagedObject
Parameters
from
a
From
clause indicating the entity typefetchClauses
a series of
FetchClause
instances for fetching the object list. AcceptsWhere
,OrderBy
, andTweak
clauses.Return Value
an
NSFetchedResultsController
that observes theDataStack
-
Utility for creating an
NSFetchedResultsController
from theDataStack
. This is useful when anNSFetchedResultsController
is preferred over the overhead ofListMonitor
s abstraction.Note
It is the caller’s responsibility to call
performFetch()
on the createdNSFetchedResultsController
.Declaration
Swift
@nonobjc public func createFetchedResultsController<O>(forDataStack dataStack: DataStack, _ from: From<O>, _ fetchClauses: [FetchClause]) -> NSFetchedResultsController<O> where O : NSManagedObject
Parameters
from
a
From
clause indicating the entity typefetchClauses
a series of
FetchClause
instances for fetching the object list. AcceptsWhere
,OrderBy
, andTweak
clauses.Return Value
an
NSFetchedResultsController
that observes theDataStack