-
The default
CSDataStack
instance to be used. IfdefaultStack
is not set before the first time accessed, a default-configuredCSDataStack
will be created.See also
CSDataStack
Note
Changing thedefaultStack
is thread safe, but it is recommended to setupCSDataStacks
on a common queue (e.g. the main queue).Declaration
Swift
@objc public static var defaultStack: CSDataStack { get set }
-
Asynchronously adds a
CSInMemoryStore
to thedefaultStack
. Migrations are also initiated by default.NSError *error; NSProgress *migrationProgress = [dataStack addInMemoryStorage:[CSInMemoryStore new] completion:^(CSSetupResult *result) { if (result.isSuccess) { // ... } } error: &error];
Declaration
Swift
public static 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 thedefaultStack
. 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
public static 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 thedefaultStack
‘s managed object model version. This method does NOT add the migrated store to the data stack.Declaration
Swift
@objc public static 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 thedefaultStack
‘s managed object model version.Declaration
Swift
@objc public static 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.
-
Using the
defaultStack
, creates anCSObjectMonitor
for the specifiedNSManagedObject
. MultipleCSObjectObserver
s may then register themselves to be notified when changes are made to theNSManagedObject
.Declaration
Swift
@objc public static func monitorObject(_ object: NSManagedObject) -> CSObjectMonitor
Parameters
object
the
NSManagedObject
to observe changes fromReturn Value
a
CSObjectMonitor
that monitors changes toobject
-
Using the
defaultStack
, creates aCSListMonitor
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 static func monitorListFrom(_ from: CSFrom, fetchClauses: [CSFetchClause]) -> CSListMonitor
Parameters
from
a
CSFrom
clause indicating the entity typefetchClauses
a series of
CSFetchClause
instances for fetching the object list. AcceptsCSWhere
,CSOrderBy
, andCSTweak
clauses.Return Value
a
CSListMonitor
instance that monitors changes to the list -
Using the
defaultStack
, asynchronously creates aCSListMonitor
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 static 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. -
Using the
defaultStack
, creates aCSListMonitor
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.Declaration
Swift
@objc public static 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
CSFetchClause
instances for fetching the object list. AcceptsCSWhere
,CSOrderBy
, andCSTweak
clauses.Return Value
a
CSListMonitor
instance that monitors changes to the list -
Using the
defaultStack
, asynchronously creates aCSListMonitor
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
@objc public static 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.
-
Using the
defaultStack
, fetches theNSManagedObject
instance in the transaction’s context from a reference created from a transaction or from a different managed object context.Declaration
Swift
@objc public static 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. -
Using the
defaultStack
, fetches theNSManagedObject
instance in the transaction’s context from anNSManagedObjectID
.Declaration
Swift
@objc public static 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. -
Using the
defaultStack
, fetches theNSManagedObject
instances in the transaction’s context from references created from a transaction or from a different managed object context.Declaration
Swift
@objc public static 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 -
Using the
defaultStack
, fetches theNSManagedObject
instances in the transaction’s context from a list ofNSManagedObjectID
.Declaration
Swift
@objc public static func fetchExistingObjectsWithIDs(_ objectIDs: [NSManagedObjectID]) -> [Any]
Parameters
objectIDs
the
NSManagedObjectID
array for the objectsReturn Value
the
NSManagedObject
array for objects that exists in the transaction -
Using the
defaultStack
, fetches the firstNSManagedObject
instance that satisfies the specifiedCSFetchClause
s. AcceptsCSWhere
,CSOrderBy
, andCSTweak
clauses.Declaration
Swift
@objc public static 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 -
Using the
defaultStack
, fetches allNSManagedObject
instances that satisfy the specifiedCSFetchClause
s. AcceptsCSWhere
,CSOrderBy
, andCSTweak
clauses.Declaration
Swift
@objc public static 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 -
Using the
defaultStack
, fetches the number ofNSManagedObject
s that satisfy the specifiedCSFetchClause
s. AcceptsCSWhere
,CSOrderBy
, andCSTweak
clauses.Declaration
Swift
@objc public static 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 -
Using the
defaultStack
, fetches theNSManagedObjectID
for the firstNSManagedObject
that satisfies the specifiedCSFetchClause
s. AcceptsCSWhere
,CSOrderBy
, andCSTweak
clauses.Declaration
Swift
@objc public static 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 -
Using the
defaultStack
, fetches theNSManagedObjectID
for allNSManagedObject
s that satisfy the specifiedCSFetchClause
s. AcceptsCSWhere
,CSOrderBy
, andCSTweak
clauses.Declaration
Swift
@objc public static 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 -
Using the
defaultStack
, queries aggregate values as specified by theCSQueryClause
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 static 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. -
Using the
defaultStack
, queries a dictionary of attribute values as specified by theCSQueryClause
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 static 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.
-
Returns the
defaultStack
‘s model version. The version string is the same as the name of the version-specific .xcdatamodeld file.Declaration
Swift
@objc public static var modelVersion: String { get }
-
Returns the entity name-to-class type mapping from the
defaultStack
‘s model.Declaration
Swift
@objc public static func entityTypesByNameForType(_ type: NSManagedObject.Type) -> [EntityName : NSManagedObject.Type]
-
Returns the
NSEntityDescription
for the specifiedNSManagedObject
subclass fromdefaultStack
‘s model.Declaration
Swift
@objc public static func entityDescriptionForClass(_ type: NSManagedObject.Type) -> NSEntityDescription?
-
Creates an
CSInMemoryStore
with default parameters and adds it to thedefaultStack
. This method blocks until completion.CSSQLiteStore *storage = [CSCoreStore addInMemoryStorageAndWaitAndReturnError:&error];
Declaration
Swift
@discardableResult @objc public static func addInMemoryStorageAndWaitAndReturnError(_ error: NSErrorPointer) -> CSInMemoryStore?
Parameters
error
the
NSError
pointer that indicates the reason in case of an failureReturn Value
the
CSInMemoryStore
added to thedefaultStack
-
Creates an
CSSQLiteStore
with default parameters and adds it to thedefaultStack
. This method blocks until completion.CSSQLiteStore *storage = [CSCoreStore addSQLiteStorageAndWaitAndReturnError:&error];
Declaration
Swift
@discardableResult @objc public static func addSQLiteStorageAndWaitAndReturnError(_ error: NSErrorPointer) -> CSSQLiteStore?
Parameters
error
the
NSError
pointer that indicates the reason in case of an failureReturn Value
the
CSSQLiteStore
added to thedefaultStack
-
Adds a
CSInMemoryStore
to thedefaultStack
and blocks until completion.NSError *error; CSInMemoryStore *storage = [CSCoreStore addStorageAndWait: [[CSInMemoryStore alloc] initWithConfiguration: @"Config1"] error: &error];
Declaration
Swift
@discardableResult @objc public static 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 thedefaultStack
-
Adds a
CSSQLiteStore
to thedefaultStack
and blocks until completion.NSError *error; CSSQLiteStore *storage = [CSCoreStore addStorageAndWait: [[CSSQLiteStore alloc] initWithConfiguration: @"Config1"] error: &error];
Declaration
Swift
@discardableResult @objc public static 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 thedefaultStack
-
Using the
defaultStack
, begins a transaction asynchronously whereNSManagedObject
creates, updates, and deletes can be made.Declaration
Swift
@objc public static 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
. -
Using the
defaultStack
, begins a transaction synchronously whereNSManagedObject
creates, updates, and deletes can be made.Declaration
Swift
@objc public static 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
.Return Value
YES
if the commit succeeded,NO
if the commit failed. IfNO
, theerror
argument will hold error information. -
Using the
defaultStack
, begins a child transaction whereNSManagedObject
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 static func beginUnsafe() -> CSUnsafeDataTransaction
Return Value
a
CSUnsafeDataTransaction
instance where creates, updates, and deletes can be made. -
Using the
defaultStack
, begins a child transaction whereNSManagedObject
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 static 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 thedefaultStack
.Declaration
Swift
@objc public static func refreshAndMergeAllObjects()