CSDataStack
@objc
public final class CSDataStack : NSObject, CoreStoreObjectiveCType
The CSDataStack
serves as the Objective-C bridging type for DataStack
.
See also
DataStack
-
Initializes a
CSDataStack
with default settings. CoreStore searches for.xcdatamodeld from the main NSBundle
and loads anNSManagedObjectModel
from it. An assertion is raised if the model could not be found.Declaration
Swift
@objc public convenience override init()
-
Initializes a
CSDataStack
from the model with the specifiedmodelName
in the specifiedbundle
.Declaration
Swift
@objc public convenience init(xcodeModelName: XcodeDataModelFileName?, bundle: Bundle?, versionChain: [String]?)
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.bundle
an optional bundle to load .xcdatamodeld models from. If not specified, the main bundle will be used.
versionChain
the version strings that indicate 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.
-
Returns the stack’s model version. The version string is the same as the name of the version-specific .xcdatamodeld file.
Declaration
Swift
@objc public var modelVersion: String { get }
-
Returns the entity name-to-class type mapping from the
CSDataStack
‘s model.Declaration
Swift
@objc public func entityTypesByNameForType(_ type: NSManagedObject.Type) -> [EntityName : NSManagedObject.Type]
-
Returns the
NSEntityDescription
for the specifiedNSManagedObject
subclass from stack’s model.Declaration
Swift
@objc public func entityDescriptionForClass(_ type: NSManagedObject.Type) -> NSEntityDescription?
-
Creates an
CSInMemoryStore
with default parameters and adds it to the stack. This method blocks until completion.CSSQLiteStore *storage = [dataStack addInMemoryStorageAndWaitAndReturnError:&error];
Declaration
Swift
@discardableResult @objc public func addInMemoryStorageAndWaitAndReturnError(_ error: NSErrorPointer) -> CSInMemoryStore?
Parameters
error
the
NSError
pointer that indicates the reason in case of an failureReturn Value
the
CSInMemoryStore
added to the stack -
Creates an
CSSQLiteStore
with default parameters and adds it to the stack. This method blocks until completion.CSSQLiteStore *storage = [dataStack addSQLiteStorageAndWaitAndReturnError:&error];
Declaration
Swift
@discardableResult @objc public func addSQLiteStorageAndWaitAndReturnError(_ error: NSErrorPointer) -> CSSQLiteStore?
Parameters
error
the
NSError
pointer that indicates the reason in case of an failureReturn Value
the
CSSQLiteStore
added to the stack -
Adds a
CSInMemoryStore
to the stack and blocks until completion.NSError *error; CSInMemoryStore *storage = [dataStack addStorageAndWait: [[CSInMemoryStore alloc] initWithConfiguration: @"Config1"] error: &error];
Declaration
Swift
@discardableResult @objc public func addInMemoryStorageAndWait(_ storage: CSInMemoryStore, error: NSErrorPointer) -> CSInMemoryStore?
Parameters
storage
the
CSInMemoryStore
error
the
NSError
pointer that indicates the reason in case of an failureReturn Value
the
CSInMemoryStore
added to the stack -
Adds a
CSSQLiteStore
to the stack and blocks until completion.NSError *error; CSSQLiteStore *storage = [dataStack addStorageAndWait: [[CSSQLiteStore alloc] initWithConfiguration: @"Config1"] error: &error];
Declaration
Swift
@discardableResult @objc public func addSQLiteStorageAndWait(_ storage: CSSQLiteStore, error: NSErrorPointer) -> CSSQLiteStore?
Parameters
storage
the
CSSQLiteStore
error
the
NSError
pointer that indicates the reason in case of an failureReturn Value
the
CSSQLiteStore
added to the stack
-
Asynchronously adds a
CSInMemoryStore
to the stack. Migrations are also initiated by default.NSError *error; NSProgress *migrationProgress = [dataStack addInMemoryStorage:[CSInMemoryStore new] completion:^(CSSetupResult *result) { if (result.isSuccess) { // ... } } error: &error];
Declaration
Swift
@objc public func addInMemoryStorage(_ storage: CSInMemoryStore, completion: @escaping (CSSetupResult) -> Void)
Parameters
storage
the
CSInMemoryStore
instancecompletion
the closure to be executed on the main queue when the process completes, either due to success or failure. The closure’s
CSSetupResult
argument indicates the result. This closure is NOT executed if an error is thrown, but will be executed with a failureCSSetupResult
result if an error occurs asynchronously. -
Asynchronously adds a
CSSQLiteStore
to the stack. Migrations are also initiated by default.NSError *error; NSProgress *migrationProgress = [dataStack addInMemoryStorage:[[CSSQLiteStore alloc] initWithFileName:@"core_data.sqlite" configuration:@"Config1"] completion:^(CSSetupResult *result) { if (result.isSuccess) { // ... } } error: &error];
Declaration
Swift
@objc public func addSQLiteStorage(_ storage: CSSQLiteStore, completion: @escaping (CSSetupResult) -> Void, error: NSErrorPointer) -> Progress?
Parameters
storage
the
CSSQLiteStore
instancecompletion
the closure to be executed on the main queue when the process completes, either due to success or failure. The closure’s
CSSetupResult
argument indicates the result. This closure is NOT executed if an error is thrown, but will be executed with a failureCSSetupResult
result if an error occurs asynchronously. Note that theCSLocalStorage
associated to the-[CSSetupResult storage]
may not always be the same instance as the parameter argument if a previousCSLocalStorage
was already added at the same URL and with the same configuration.error
the
NSError
pointer that indicates the reason in case of an failureReturn Value
an
NSProgress
instance if a migration has started.nil
if no migrations are required or iferror
was set. -
Migrates a
CSSQLiteStore
to match theCSDataStack
‘s managed object model version. This method does NOT add the migrated store to the data stack.Declaration
Swift
@objc public func upgradeStorageIfNeeded(_ storage: CSSQLiteStore, completion: @escaping (CSMigrationResult) -> Void, error: NSErrorPointer) -> Progress?
Parameters
storage
the
CSSQLiteStore
instancecompletion
the closure to be executed on the main queue when the migration completes, either due to success or failure. The closure’s
CSMigrationResult
argument indicates the result. This closure is NOT executed if an error is thrown, but will be executed with a failureCSSetupResult
result if an error occurs asynchronously.error
the
NSError
pointer that indicates the reason in case of an failureReturn Value
an
NSProgress
instance if a migration has started.nil
if no migrations are required or iferror
was set. -
Checks the migration steps required for the
CSSQLiteStore
to match theCSDataStack
‘s managed object model version.Declaration
Swift
@objc public func requiredMigrationsForSQLiteStore(_ storage: CSSQLiteStore, error: NSErrorPointer) -> [CSMigrationType]?
Parameters
storage
the
CSSQLiteStore
instanceerror
the
NSError
pointer that indicates the reason in case of an failureReturn Value
a
CSMigrationType
array indicating the migration steps required for the store, or an empty array if the file does not exist yet. Otherwise,nil
is returned and theerror
argument is set if either inspection of the store failed, or if no mapping model was found/inferred.
-
Creates a
CSObjectMonitor
for the specifiedNSManagedObject
. MultipleObjectObserver
s may then register themselves to be notified when changes are made to theNSManagedObject
.Declaration
Swift
@objc public func monitorObject(_ object: NSManagedObject) -> CSObjectMonitor
Parameters
object
the
NSManagedObject
to observe changes fromReturn Value
a
ObjectMonitor
that monitors changes toobject
-
Creates a
CSListMonitor
for a list ofNSManagedObject
s that satisfy the specified fetch clauses. MultipleCSListObserver
s may then register themselves to be notified when changes are made to the list.Declaration
Swift
@objc public func monitorListFrom(_ from: CSFrom, fetchClauses: [CSFetchClause]) -> CSListMonitor
Parameters
from
a
CSFrom
clause indicating the entity typefetchClauses
a series of
FetchClause
instances for fetching the object list. AcceptsCSWhere
,CSOrderBy
, andCSTweak
clauses.Return Value
a
CSListMonitor
instance that monitors changes to the list -
Asynchronously creates a
CSListMonitor
for a list ofNSManagedObject
s that satisfy the specified fetch clauses. MultipleCSListObserver
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
@objc public func monitorListByCreatingAsynchronously(_ createAsynchronously: @escaping (CSListMonitor) -> Void, from: CSFrom, fetchClauses: [CSFetchClause])
Parameters
createAsynchronously
the closure that receives the created
CSListMonitor
instancefrom
a
CSFrom
clause indicating the entity typefetchClauses
a series of
CSFetchClause
instances for fetching the object list. AcceptsCSWhere
,CSOrderBy
, andCSTweak
clauses. -
Creates a
CSListMonitor
for a sectioned list ofNSManagedObject
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
@objc public func monitorSectionedListFrom(_ from: CSFrom, sectionBy: CSSectionBy, fetchClauses: [CSFetchClause]) -> CSListMonitor
Parameters
from
a
CSFrom
clause indicating the entity typesectionBy
a
CSSectionBy
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. AcceptsCSWhere
,CSOrderBy
, andCSTweak
clauses.Return Value
a
CSListMonitor
instance that monitors changes to the list -
Asynchronously creates a
CSListMonitor
for a sectioned list ofNSManagedObject
s that satisfy the specified fetch clauses. MultipleCSListObserver
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 monitorSectionedListByCreatingAsynchronously(_ createAsynchronously: @escaping (CSListMonitor) -> Void, from: CSFrom, sectionBy: CSSectionBy, fetchClauses: [CSFetchClause])
Parameters
createAsynchronously
the closure that receives the created
CSListMonitor
instancefrom
a
CSFrom
clause indicating the entity typesectionBy
a
CSSectionBy
clause indicating the keyPath for the attribute to use when sorting the list into sections.fetchClauses
a series of
CSFetchClause
instances for fetching the object list. AcceptsCSWhere
,CSOrderBy
, andCSTweak
clauses.
-
Fetches the
NSManagedObject
instance in the transaction’s context from a reference created from a transaction or from a different managed object context.Declaration
Swift
@objc public func fetchExistingObject(_ object: NSManagedObject) -> Any?
Parameters
object
a reference to the object created/fetched outside the transaction
Return Value
the
NSManagedObject
instance if the object exists in the transaction, ornil
if not found. -
Fetches the
NSManagedObject
instance in the transaction’s context from anNSManagedObjectID
.Declaration
Swift
@objc public func fetchExistingObjectWithID(_ objectID: NSManagedObjectID) -> Any?
Parameters
objectID
the
NSManagedObjectID
for the objectReturn Value
the
NSManagedObject
instance if the object exists in the transaction, ornil
if not found. -
Fetches the
NSManagedObject
instances in the transaction’s context from references created from a transaction or from a different managed object context.Declaration
Swift
@objc public func fetchExistingObjects(_ objects: [NSManagedObject]) -> [Any]
Parameters
objects
an array of
NSManagedObject
s created/fetched outside the transactionReturn Value
the
NSManagedObject
array for objects that exists in the transaction -
Fetches the
NSManagedObject
instances in the transaction’s context from a list ofNSManagedObjectID
.Declaration
Swift
@objc public func fetchExistingObjectsWithIDs(_ objectIDs: [NSManagedObjectID]) -> [Any]
Parameters
objectIDs
the
NSManagedObjectID
array for the objectsReturn Value
the
NSManagedObject
array for objects that exists in the transaction -
Fetches the first
NSManagedObject
instance that satisfies the specifiedCSFetchClause
s. AcceptsCSWhere
,CSOrderBy
, andCSTweak
clauses.Declaration
Swift
@objc public func fetchOneFrom(_ from: CSFrom, fetchClauses: [CSFetchClause]) -> Any?
Parameters
from
a
From
clause indicating the entity typefetchClauses
a series of
CSFetchClause
instances for the fetch request. AcceptsCSWhere
,CSOrderBy
, andCSTweak
clauses.Return Value
the first
NSManagedObject
instance that satisfies the specifiedCSFetchClause
s -
Fetches all
NSManagedObject
instances that satisfy the specifiedCSFetchClause
s. AcceptsCSWhere
,CSOrderBy
, andCSTweak
clauses.Declaration
Swift
@objc public func fetchAllFrom(_ from: CSFrom, fetchClauses: [CSFetchClause]) -> [Any]?
Parameters
from
a
CSFrom
clause indicating the entity typefetchClauses
a series of
CSFetchClause
instances for the fetch request. AcceptsCSWhere
,CSOrderBy
, andCSTweak
clauses.Return Value
all
NSManagedObject
instances that satisfy the specifiedCSFetchClause
s -
Fetches the number of
NSManagedObject
s that satisfy the specifiedCSFetchClause
s. AcceptsCSWhere
,CSOrderBy
, andCSTweak
clauses.Declaration
Swift
@objc public func fetchCountFrom(_ from: CSFrom, fetchClauses: [CSFetchClause]) -> NSNumber?
Parameters
from
a
CSFrom
clause indicating the entity typefetchClauses
a series of
CSFetchClause
instances for the fetch request. AcceptsCSWhere
,CSOrderBy
, andCSTweak
clauses.Return Value
the number
NSManagedObject
s that satisfy the specifiedCSFetchClause
s -
Fetches the
NSManagedObjectID
for the firstNSManagedObject
that satisfies the specifiedCSFetchClause
s. AcceptsCSWhere
,CSOrderBy
, andCSTweak
clauses.Declaration
Swift
@objc public func fetchObjectIDFrom(_ from: CSFrom, fetchClauses: [CSFetchClause]) -> NSManagedObjectID?
Parameters
from
a
CSFrom
clause indicating the entity typefetchClauses
a series of
CSFetchClause
instances for the fetch request. AcceptsCSWhere
,CSOrderBy
, andCSTweak
clauses.Return Value
the
NSManagedObjectID
for the firstNSManagedObject
that satisfies the specifiedCSFetchClause
s -
Fetches the
NSManagedObjectID
for allNSManagedObject
s that satisfy the specifiedCSFetchClause
s. AcceptsCSWhere
,CSOrderBy
, andCSTweak
clauses.Declaration
Swift
@objc public func fetchObjectIDsFrom(_ from: CSFrom, fetchClauses: [CSFetchClause]) -> [NSManagedObjectID]?
Parameters
from
a
CSFrom
clause indicating the entity typefetchClauses
a series of
FetchClause
instances for the fetch request. AcceptsCSWhere
,CSOrderBy
, andCSTweak
clauses.Return Value
the
NSManagedObjectID
for allNSManagedObject
s that satisfy the specifiedCSFetchClause
s -
Queries aggregate values as specified by the
CSQueryClause
s. Requires at least aCSSelect
clause, and optionalCSWhere
,CSOrderBy
,CSGroupBy
, andCSTweak
clauses.A
query
differs from afetch
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.Declaration
Swift
@objc public func queryValueFrom(_ from: CSFrom, selectClause: CSSelect, queryClauses: [CSQueryClause]) -> Any?
Parameters
from
a
CSFrom
clause indicating the entity typeselectClause
a
CSSelect
clause indicating the properties to fetch, and with the generic type indicating the return type.queryClauses
a series of
CSQueryClause
instances for the query request. AcceptsCSWhere
,CSOrderBy
,CSGroupBy
, andCSTweak
clauses.Return Value
the result of the the query. The type of the return value is specified by the generic type of the
CSSelect
parameter. -
Queries a dictionary of attribute values as specified by the
CSQueryClause
s. Requires at least aCSSelect
clause, and optionalCSWhere
,CSOrderBy
,CSGroupBy
, andCSTweak
clauses.A
query
differs from afetch
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.Declaration
Swift
@objc public func queryAttributesFrom(_ from: CSFrom, selectClause: CSSelect, queryClauses: [CSQueryClause]) -> [[String : Any]]?
Parameters
from
a
CSFrom
clause indicating the entity typeselectClause
a
CSSelect
clause indicating the properties to fetch, and with the generic type indicating the return type.queryClauses
a series of
CSQueryClause
instances for the query request. AcceptsCSWhere
,CSOrderBy
,CSGroupBy
, andCSTweak
clauses.Return Value
the result of the the query. The type of the return value is specified by the generic type of the
CSSelect
parameter.
-
Begins a transaction asynchronously where
NSManagedObject
creates, updates, and deletes can be made.Declaration
Swift
@objc public func beginAsynchronous(_ closure: @escaping (_ transaction: CSAsynchronousDataTransaction) -> Void)
Parameters
closure
the block 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
. -
Begins a transaction synchronously where
NSManagedObject
creates, updates, and deletes can be made.Declaration
Swift
@objc public func beginSynchronous(_ closure: @escaping (_ transaction: CSSynchronousDataTransaction) -> Void, error: NSErrorPointer) -> Bool
Parameters
closure
the block 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
.error
the
CSError
pointer that indicates the reason in case of an failureReturn Value
YES
if the commit succeeded,NO
if the commit failed. IfNO
, theerror
argument will hold error information. -
Begins a child transaction where
NSManagedObject
creates, updates, and deletes can be made. This is useful for making temporary changes, such as partially filled forms.To support
undo
methods such as-undo
,-redo
, and-rollback
, use the-beginSafeWithSupportsUndo:
method passingYES
to the argument. Withoutundo
support, calling those methods will raise an exception.Declaration
Swift
@objc public func beginUnsafe() -> CSUnsafeDataTransaction
Return Value
a
CSUnsafeDataTransaction
instance where creates, updates, and deletes can be made. -
Begins a child transaction where
NSManagedObject
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 isYES
, otherwise those method will raise an exception. Note that turning on Undo support may heavily impact performance especially on iOS or watchOS where memory is limited.
Declaration
Swift
@objc public func beginUnsafeWithSupportsUndo(_ supportsUndo: Bool) -> CSUnsafeDataTransaction
Return Value
a
CSUnsafeDataTransaction
instance where creates, updates, and deletes can be made. - prameter supportsUndo:
-
Refreshes all registered objects
NSManagedObject
s in theDataStack
.Declaration
Swift
@objc public func refreshAndMergeAllObjects()