additional safety for transactions by splitting between sync and async subclasses

This commit is contained in:
John Rommel Estropia
2015-02-28 10:37:01 +09:00
parent 2da04d2d94
commit 59cd505dc6
7 changed files with 234 additions and 102 deletions

View File

@@ -38,11 +38,11 @@ public extension DataStack {
:param: 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.
*/
public func performTransaction(closure: (transaction: DataTransaction) -> Void) {
public func performTransaction(closure: (transaction: AsynchronousDataTransaction) -> Void) {
DataTransaction(
AsynchronousDataTransaction(
mainContext: self.mainContext,
queue: self.transactionQueue,
queue: self.childTransactionQueue,
closure: closure).perform()
}
@@ -52,11 +52,11 @@ public extension DataStack {
:param: 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.
:returns: a SaveResult value indicating success or failure, or nil if the transaction was not comitted synchronously
*/
public func performTransactionAndWait(closure: (transaction: DataTransaction) -> Void) -> SaveResult? {
public func performTransactionAndWait(closure: (transaction: SynchronousDataTransaction) -> Void) -> SaveResult? {
return DataTransaction(
return SynchronousDataTransaction(
mainContext: self.mainContext,
queue: self.transactionQueue,
queue: self.childTransactionQueue,
closure: closure).performAndWait()
}
}