WIP: CSListMonitor

This commit is contained in:
John Estropia
2016-03-28 17:19:51 +09:00
parent 40c320e1ca
commit eda398d758
13 changed files with 1411 additions and 616 deletions

View File

@@ -39,7 +39,7 @@ import CoreData
let person = transaction.fetchOne(From<MyPersonEntity>("Configuration1"))
```
*/
public struct From<T: NSManagedObject>: Hashable {
public struct From<T: NSManagedObject> {
/**
Initializes a `From` clause.
@@ -299,20 +299,8 @@ public struct From<T: NSManagedObject>: Hashable {
}
// MARK: Hashable
public var hashValue: Int {
return ObjectIdentifier(self.entityClass).hashValue
}
// MARK: Internal
internal let entityClass: AnyClass
internal let findPersistentStores: (context: NSManagedObjectContext) -> [NSPersistentStore]?
internal func applyToFetchRequest(fetchRequest: NSFetchRequest, context: NSManagedObjectContext, applyAffectedStores: Bool = true) {
fetchRequest.entity = context.entityDescriptionForEntityClass(self.entityClass)
@@ -329,15 +317,20 @@ public struct From<T: NSManagedObject>: Hashable {
return stores?.isEmpty == false
}
internal init(entityClass: AnyClass, findPersistentStores: (context: NSManagedObjectContext) -> [NSPersistentStore]?) {
internal func upcast() -> From<NSManagedObject> {
self.entityClass = entityClass
self.findPersistentStores = findPersistentStores
return From<NSManagedObject>(
entityClass: self.entityClass,
findPersistentStores: self.findPersistentStores
)
}
// MARK: Private
private let entityClass: AnyClass
private let findPersistentStores: (context: NSManagedObjectContext) -> [NSPersistentStore]?
private init(entityClass: AnyClass) {
self.init(
@@ -393,13 +386,10 @@ public struct From<T: NSManagedObject>: Hashable {
}
)
}
}
// MARK: - From: Equatable
@warn_unused_result
public func == <T: NSManagedObject, U: NSManagedObject>(lhs: From<T>, rhs: From<U>) -> Bool {
return lhs.entityClass == rhs.entityClass
private init(entityClass: AnyClass, findPersistentStores: (context: NSManagedObjectContext) -> [NSPersistentStore]?) {
self.entityClass = entityClass
self.findPersistentStores = findPersistentStores
}
}