This commit is contained in:
John Estropia
2017-06-05 12:45:35 +09:00
parent 5fde9030c7
commit fc7df671de
5 changed files with 57 additions and 65 deletions

View File

@@ -35,7 +35,7 @@ import CoreData
- SeeAlso: `AsynchronousDataTransaction` - SeeAlso: `AsynchronousDataTransaction`
*/ */
@objc @objc
public final class CSAsynchronousDataTransaction: CSBaseDataTransaction { public final class CSAsynchronousDataTransaction: CSBaseDataTransaction, CoreStoreObjectiveCType {
/** /**
Saves the transaction changes. This method should not be used after the `-commitWithCompletion:` method was already called once. Saves the transaction changes. This method should not be used after the `-commitWithCompletion:` method was already called once.
@@ -139,9 +139,9 @@ public final class CSAsynchronousDataTransaction: CSBaseDataTransaction {
public typealias SwiftType = AsynchronousDataTransaction public typealias SwiftType = AsynchronousDataTransaction
public override var bridgeToSwift: AsynchronousDataTransaction { public var bridgeToSwift: AsynchronousDataTransaction {
return super.bridgeToSwift as! AsynchronousDataTransaction return super.swiftTransaction as! AsynchronousDataTransaction
} }
public required init(_ swiftValue: AsynchronousDataTransaction) { public required init(_ swiftValue: AsynchronousDataTransaction) {
@@ -149,9 +149,9 @@ public final class CSAsynchronousDataTransaction: CSBaseDataTransaction {
super.init(swiftValue as BaseDataTransaction) super.init(swiftValue as BaseDataTransaction)
} }
public required init(_ swiftValue: BaseDataTransaction) { public required override init(_ swiftValue: BaseDataTransaction) {
super.init(swiftValue as! AsynchronousDataTransaction) super.init(swiftValue)
} }

View File

@@ -40,7 +40,7 @@ public extension CSBaseDataTransaction {
@objc @objc
public func fetchExistingObject(_ object: NSManagedObject) -> Any? { public func fetchExistingObject(_ object: NSManagedObject) -> Any? {
return self.bridgeToSwift.context.fetchExisting(object) as NSManagedObject? return self.swiftTransaction.context.fetchExisting(object) as NSManagedObject?
} }
/** /**
@@ -52,7 +52,7 @@ public extension CSBaseDataTransaction {
@objc @objc
public func fetchExistingObjectWithID(_ objectID: NSManagedObjectID) -> Any? { public func fetchExistingObjectWithID(_ objectID: NSManagedObjectID) -> Any? {
return self.bridgeToSwift.context.fetchExisting(objectID) as NSManagedObject? return self.swiftTransaction.context.fetchExisting(objectID) as NSManagedObject?
} }
/** /**
@@ -64,7 +64,7 @@ public extension CSBaseDataTransaction {
@objc @objc
public func fetchExistingObjects(_ objects: [NSManagedObject]) -> [Any] { public func fetchExistingObjects(_ objects: [NSManagedObject]) -> [Any] {
return self.bridgeToSwift.context.fetchExisting(objects) as [NSManagedObject] return self.swiftTransaction.context.fetchExisting(objects) as [NSManagedObject]
} }
/** /**
@@ -76,7 +76,7 @@ public extension CSBaseDataTransaction {
@objc @objc
public func fetchExistingObjectsWithIDs(_ objectIDs: [NSManagedObjectID]) -> [Any] { public func fetchExistingObjectsWithIDs(_ objectIDs: [NSManagedObjectID]) -> [Any] {
return self.bridgeToSwift.context.fetchExisting(objectIDs) as [NSManagedObject] return self.swiftTransaction.context.fetchExisting(objectIDs) as [NSManagedObject]
} }
/** /**
@@ -90,10 +90,10 @@ public extension CSBaseDataTransaction {
public func fetchOneFrom(_ from: CSFrom, fetchClauses: [CSFetchClause]) -> Any? { public func fetchOneFrom(_ from: CSFrom, fetchClauses: [CSFetchClause]) -> Any? {
CoreStore.assert( CoreStore.assert(
self.bridgeToSwift.isRunningInAllowedQueue(), self.swiftTransaction.isRunningInAllowedQueue(),
"Attempted to fetch from a \(cs_typeName(self)) outside its designated queue." "Attempted to fetch from a \(cs_typeName(self)) outside its designated queue."
) )
return self.bridgeToSwift.context.fetchOne(from, fetchClauses) return self.swiftTransaction.context.fetchOne(from, fetchClauses)
} }
/** /**
@@ -107,10 +107,10 @@ public extension CSBaseDataTransaction {
public func fetchAllFrom(_ from: CSFrom, fetchClauses: [CSFetchClause]) -> [Any]? { public func fetchAllFrom(_ from: CSFrom, fetchClauses: [CSFetchClause]) -> [Any]? {
CoreStore.assert( CoreStore.assert(
self.bridgeToSwift.isRunningInAllowedQueue(), self.swiftTransaction.isRunningInAllowedQueue(),
"Attempted to fetch from a \(cs_typeName(self)) outside its designated queue." "Attempted to fetch from a \(cs_typeName(self)) outside its designated queue."
) )
return self.bridgeToSwift.context.fetchAll(from, fetchClauses) return self.swiftTransaction.context.fetchAll(from, fetchClauses)
} }
/** /**
@@ -124,10 +124,10 @@ public extension CSBaseDataTransaction {
public func fetchCountFrom(_ from: CSFrom, fetchClauses: [CSFetchClause]) -> NSNumber? { public func fetchCountFrom(_ from: CSFrom, fetchClauses: [CSFetchClause]) -> NSNumber? {
CoreStore.assert( CoreStore.assert(
self.bridgeToSwift.isRunningInAllowedQueue(), self.swiftTransaction.isRunningInAllowedQueue(),
"Attempted to fetch from a \(cs_typeName(self)) outside its designated queue." "Attempted to fetch from a \(cs_typeName(self)) outside its designated queue."
) )
return self.bridgeToSwift.context return self.swiftTransaction.context
.fetchCount(from, fetchClauses) .fetchCount(from, fetchClauses)
.flatMap { NSNumber(value: $0) } .flatMap { NSNumber(value: $0) }
} }
@@ -143,10 +143,10 @@ public extension CSBaseDataTransaction {
public func fetchObjectIDFrom(_ from: CSFrom, fetchClauses: [CSFetchClause]) -> NSManagedObjectID? { public func fetchObjectIDFrom(_ from: CSFrom, fetchClauses: [CSFetchClause]) -> NSManagedObjectID? {
CoreStore.assert( CoreStore.assert(
self.bridgeToSwift.isRunningInAllowedQueue(), self.swiftTransaction.isRunningInAllowedQueue(),
"Attempted to fetch from a \(cs_typeName(self)) outside its designated queue." "Attempted to fetch from a \(cs_typeName(self)) outside its designated queue."
) )
return self.bridgeToSwift.context.fetchObjectID(from, fetchClauses) return self.swiftTransaction.context.fetchObjectID(from, fetchClauses)
} }
/** /**
@@ -163,10 +163,10 @@ public extension CSBaseDataTransaction {
public func queryValueFrom(_ from: CSFrom, selectClause: CSSelect, queryClauses: [CSQueryClause]) -> Any? { public func queryValueFrom(_ from: CSFrom, selectClause: CSSelect, queryClauses: [CSQueryClause]) -> Any? {
CoreStore.assert( CoreStore.assert(
self.bridgeToSwift.isRunningInAllowedQueue(), self.swiftTransaction.isRunningInAllowedQueue(),
"Attempted to query from a \(cs_typeName(self)) outside its designated queue." "Attempted to query from a \(cs_typeName(self)) outside its designated queue."
) )
return self.bridgeToSwift.context.queryValue(from, selectClause, queryClauses) return self.swiftTransaction.context.queryValue(from, selectClause, queryClauses)
} }
/** /**
@@ -183,9 +183,9 @@ public extension CSBaseDataTransaction {
public func queryAttributesFrom(_ from: CSFrom, selectClause: CSSelect, queryClauses: [CSQueryClause]) -> [[String: Any]]? { public func queryAttributesFrom(_ from: CSFrom, selectClause: CSSelect, queryClauses: [CSQueryClause]) -> [[String: Any]]? {
CoreStore.assert( CoreStore.assert(
self.bridgeToSwift.isRunningInAllowedQueue(), self.swiftTransaction.isRunningInAllowedQueue(),
"Attempted to query from a \(cs_typeName(self)) outside its designated queue." "Attempted to query from a \(cs_typeName(self)) outside its designated queue."
) )
return self.bridgeToSwift.context.queryAttributes(from, selectClause, queryClauses) return self.swiftTransaction.context.queryAttributes(from, selectClause, queryClauses)
} }
} }

View File

@@ -35,7 +35,7 @@ import CoreData
- SeeAlso: `BaseDataTransaction` - SeeAlso: `BaseDataTransaction`
*/ */
@objc @objc
public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType { public class CSBaseDataTransaction: NSObject {
// MARK: Object management // MARK: Object management
@@ -45,7 +45,7 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType {
@objc @objc
public var hasChanges: Bool { public var hasChanges: Bool {
return self.bridgeToSwift.hasChanges return self.swiftTransaction.hasChanges
} }
/** /**
@@ -57,7 +57,7 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType {
@objc @objc
public func createInto(_ into: CSInto) -> Any { public func createInto(_ into: CSInto) -> Any {
return self.bridgeToSwift.create(into.bridgeToSwift) return self.swiftTransaction.create(into.bridgeToSwift)
} }
/** /**
@@ -69,7 +69,7 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType {
@objc @objc
public func editObject(_ object: NSManagedObject?) -> Any? { public func editObject(_ object: NSManagedObject?) -> Any? {
return self.bridgeToSwift.edit(object) return self.swiftTransaction.edit(object)
} }
/** /**
@@ -82,7 +82,7 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType {
@objc @objc
public func editInto(_ into: CSInto, objectID: NSManagedObjectID) -> Any? { public func editInto(_ into: CSInto, objectID: NSManagedObjectID) -> Any? {
return self.bridgeToSwift.edit(into.bridgeToSwift, objectID) return self.swiftTransaction.edit(into.bridgeToSwift, objectID)
} }
/** /**
@@ -93,7 +93,7 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType {
@objc @objc
public func deleteObject(_ object: NSManagedObject?) { public func deleteObject(_ object: NSManagedObject?) {
self.bridgeToSwift.delete(object) self.swiftTransaction.delete(object)
} }
/** /**
@@ -104,7 +104,7 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType {
@objc @objc
public func deleteObjects(_ objects: [NSManagedObject]) { public func deleteObjects(_ objects: [NSManagedObject]) {
self.bridgeToSwift.delete(objects) self.swiftTransaction.delete(objects)
} }
/** /**
@@ -113,7 +113,7 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType {
@objc @objc
public func refreshAndMergeAllObjects() { public func refreshAndMergeAllObjects() {
self.bridgeToSwift.refreshAndMergeAllObjects() self.swiftTransaction.refreshAndMergeAllObjects()
} }
@@ -128,7 +128,7 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType {
@objc @objc
public func insertedObjectsOfType(_ entity: NSManagedObject.Type) -> Set<NSManagedObject> { public func insertedObjectsOfType(_ entity: NSManagedObject.Type) -> Set<NSManagedObject> {
return self.bridgeToSwift.insertedObjects(entity) return self.swiftTransaction.insertedObjects(entity)
} }
/** /**
@@ -139,7 +139,7 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType {
@objc @objc
public func insertedObjectIDs() -> Set<NSManagedObjectID> { public func insertedObjectIDs() -> Set<NSManagedObjectID> {
return self.bridgeToSwift.insertedObjectIDs() return self.swiftTransaction.insertedObjectIDs()
} }
/** /**
@@ -151,7 +151,7 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType {
@objc @objc
public func insertedObjectIDsOfType(_ entity: NSManagedObject.Type) -> Set<NSManagedObjectID> { public func insertedObjectIDsOfType(_ entity: NSManagedObject.Type) -> Set<NSManagedObjectID> {
return self.bridgeToSwift.insertedObjectIDs(entity) return self.swiftTransaction.insertedObjectIDs(entity)
} }
/** /**
@@ -163,7 +163,7 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType {
@objc @objc
public func updatedObjectsOfType(_ entity: NSManagedObject.Type) -> Set<NSManagedObject> { public func updatedObjectsOfType(_ entity: NSManagedObject.Type) -> Set<NSManagedObject> {
return self.bridgeToSwift.updatedObjects(entity) return self.swiftTransaction.updatedObjects(entity)
} }
/** /**
@@ -174,7 +174,7 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType {
@objc @objc
public func updatedObjectIDs() -> Set<NSManagedObjectID> { public func updatedObjectIDs() -> Set<NSManagedObjectID> {
return self.bridgeToSwift.updatedObjectIDs() return self.swiftTransaction.updatedObjectIDs()
} }
/** /**
@@ -186,7 +186,7 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType {
@objc @objc
public func updatedObjectIDsOfType(_ entity: NSManagedObject.Type) -> Set<NSManagedObjectID> { public func updatedObjectIDsOfType(_ entity: NSManagedObject.Type) -> Set<NSManagedObjectID> {
return self.bridgeToSwift.updatedObjectIDs(entity) return self.swiftTransaction.updatedObjectIDs(entity)
} }
/** /**
@@ -198,7 +198,7 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType {
@objc @objc
public func deletedObjectsOfType(_ entity: NSManagedObject.Type) -> Set<NSManagedObject> { public func deletedObjectsOfType(_ entity: NSManagedObject.Type) -> Set<NSManagedObject> {
return self.bridgeToSwift.deletedObjects(entity) return self.swiftTransaction.deletedObjects(entity)
} }
/** /**
@@ -209,7 +209,7 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType {
@objc @objc
public func deletedObjectIDs() -> Set<NSManagedObjectID> { public func deletedObjectIDs() -> Set<NSManagedObjectID> {
return self.bridgeToSwift.deletedObjectIDs() return self.swiftTransaction.deletedObjectIDs()
} }
/** /**
@@ -221,7 +221,7 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType {
@objc @objc
public func deletedObjectIDsOfType(_ entity: NSManagedObject.Type) -> Set<NSManagedObjectID> { public func deletedObjectIDsOfType(_ entity: NSManagedObject.Type) -> Set<NSManagedObjectID> {
return self.bridgeToSwift.deletedObjectIDs(entity) return self.swiftTransaction.deletedObjectIDs(entity)
} }
@@ -229,7 +229,7 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType {
public override var hash: Int { public override var hash: Int {
return ObjectIdentifier(self.bridgeToSwift).hashValue return ObjectIdentifier(self.swiftTransaction).hashValue
} }
public override func isEqual(_ object: Any?) -> Bool { public override func isEqual(_ object: Any?) -> Bool {
@@ -238,28 +238,20 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType {
return false return false
} }
return self.bridgeToSwift === object.bridgeToSwift return self.swiftTransaction === object.swiftTransaction
} }
// MARK: CoreStoreObjectiveCType // MARK: Internal
public required init(_ swiftValue: BaseDataTransaction) { internal let swiftTransaction: BaseDataTransaction
internal init(_ swiftValue: BaseDataTransaction) {
self.swiftTransaction = swiftValue self.swiftTransaction = swiftValue
super.init() super.init()
} }
public var bridgeToSwift: BaseDataTransaction {
return self.swiftTransaction
}
// MARK: Private
private let swiftTransaction: BaseDataTransaction
// MARK: Deprecated // MARK: Deprecated
@@ -267,20 +259,20 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType {
@objc @objc
public func insertedObjects() -> Set<NSManagedObject> { public func insertedObjects() -> Set<NSManagedObject> {
return self.bridgeToSwift.insertedObjects() return self.swiftTransaction.insertedObjects()
} }
@available(*, deprecated, message: "Use -[updatedObjectsOfType:] and pass the specific entity class") @available(*, deprecated, message: "Use -[updatedObjectsOfType:] and pass the specific entity class")
@objc @objc
public func updatedObjects() -> Set<NSManagedObject> { public func updatedObjects() -> Set<NSManagedObject> {
return self.bridgeToSwift.updatedObjects() return self.swiftTransaction.updatedObjects()
} }
@available(*, deprecated, message: "Use -[deletedObjectsOfType:] and pass the specific entity class") @available(*, deprecated, message: "Use -[deletedObjectsOfType:] and pass the specific entity class")
@objc @objc
public func deletedObjects() -> Set<NSManagedObject> { public func deletedObjects() -> Set<NSManagedObject> {
return self.bridgeToSwift.deletedObjects() return self.swiftTransaction.deletedObjects()
} }
} }

View File

@@ -35,7 +35,7 @@ import CoreData
- SeeAlso: `SynchronousDataTransaction` - SeeAlso: `SynchronousDataTransaction`
*/ */
@objc @objc
public final class CSSynchronousDataTransaction: CSBaseDataTransaction { public final class CSSynchronousDataTransaction: CSBaseDataTransaction, CoreStoreObjectiveCType {
/** /**
Saves the transaction changes and waits for completion synchronously. This method should not be used after the `-commitAndWaitWithError:` method was already called once. Saves the transaction changes and waits for completion synchronously. This method should not be used after the `-commitAndWaitWithError:` method was already called once.
@@ -129,9 +129,9 @@ public final class CSSynchronousDataTransaction: CSBaseDataTransaction {
public typealias SwiftType = SynchronousDataTransaction public typealias SwiftType = SynchronousDataTransaction
public override var bridgeToSwift: SynchronousDataTransaction { public var bridgeToSwift: SynchronousDataTransaction {
return super.bridgeToSwift as! SynchronousDataTransaction return super.swiftTransaction as! SynchronousDataTransaction
} }
public required init(_ swiftValue: SynchronousDataTransaction) { public required init(_ swiftValue: SynchronousDataTransaction) {
@@ -139,9 +139,9 @@ public final class CSSynchronousDataTransaction: CSBaseDataTransaction {
super.init(swiftValue as BaseDataTransaction) super.init(swiftValue as BaseDataTransaction)
} }
public required init(_ swiftValue: BaseDataTransaction) { public required override init(_ swiftValue: BaseDataTransaction) {
super.init(swiftValue as! SynchronousDataTransaction) super.init(swiftValue)
} }

View File

@@ -35,7 +35,7 @@ import CoreData
- SeeAlso: `UnsafeDataTransaction` - SeeAlso: `UnsafeDataTransaction`
*/ */
@objc @objc
public final class CSUnsafeDataTransaction: CSBaseDataTransaction { public final class CSUnsafeDataTransaction: CSBaseDataTransaction, CoreStoreObjectiveCType {
/** /**
Saves the transaction changes asynchronously. For a `CSUnsafeDataTransaction`, multiple commits are allowed, although it is the developer's responsibility to ensure a reasonable leeway to prevent blocking the main thread. Saves the transaction changes asynchronously. For a `CSUnsafeDataTransaction`, multiple commits are allowed, although it is the developer's responsibility to ensure a reasonable leeway to prevent blocking the main thread.
@@ -189,9 +189,9 @@ public final class CSUnsafeDataTransaction: CSBaseDataTransaction {
public typealias SwiftType = UnsafeDataTransaction public typealias SwiftType = UnsafeDataTransaction
public override var bridgeToSwift: UnsafeDataTransaction { public var bridgeToSwift: UnsafeDataTransaction {
return super.bridgeToSwift as! UnsafeDataTransaction return super.swiftTransaction as! UnsafeDataTransaction
} }
public required init(_ swiftValue: UnsafeDataTransaction) { public required init(_ swiftValue: UnsafeDataTransaction) {
@@ -199,9 +199,9 @@ public final class CSUnsafeDataTransaction: CSBaseDataTransaction {
super.init(swiftValue as BaseDataTransaction) super.init(swiftValue as BaseDataTransaction)
} }
public required init(_ swiftValue: BaseDataTransaction) { public required override init(_ swiftValue: BaseDataTransaction) {
super.init(swiftValue as! UnsafeDataTransaction) super.init(swiftValue)
} }