mirror of
https://github.com/JohnEstropia/CoreStore.git
synced 2026-03-29 22:01:56 +02:00
fix bug when using ObjectMonitor with CoreStoreObjects
This commit is contained in:
@@ -35,7 +35,7 @@ internal final class CoreStoreFetchedResultsController: NSFetchedResultsControll
|
|||||||
// MARK: Internal
|
// MARK: Internal
|
||||||
|
|
||||||
@nonobjc
|
@nonobjc
|
||||||
internal convenience init<T: DynamicObject>(dataStack: DataStack, fetchRequest: NSFetchRequest<NSManagedObject>, from: From<T>?, sectionBy: SectionBy? = nil, applyFetchClauses: @escaping (_ fetchRequest: NSFetchRequest<NSManagedObject>) -> Void) {
|
internal convenience init<T: DynamicObject>(dataStack: DataStack, fetchRequest: NSFetchRequest<NSManagedObject>, from: From<T>, sectionBy: SectionBy? = nil, applyFetchClauses: @escaping (_ fetchRequest: NSFetchRequest<NSManagedObject>) -> Void) {
|
||||||
|
|
||||||
self.init(
|
self.init(
|
||||||
context: dataStack.mainContext,
|
context: dataStack.mainContext,
|
||||||
@@ -47,33 +47,18 @@ internal final class CoreStoreFetchedResultsController: NSFetchedResultsControll
|
|||||||
}
|
}
|
||||||
|
|
||||||
@nonobjc
|
@nonobjc
|
||||||
internal init<T: DynamicObject>(context: NSManagedObjectContext, fetchRequest: NSFetchRequest<NSManagedObject>, from: From<T>?, sectionBy: SectionBy? = nil, applyFetchClauses: @escaping (_ fetchRequest: NSFetchRequest<NSManagedObject>) -> Void) {
|
internal init<T: DynamicObject>(context: NSManagedObjectContext, fetchRequest: NSFetchRequest<NSManagedObject>, from: From<T>, sectionBy: SectionBy? = nil, applyFetchClauses: @escaping (_ fetchRequest: NSFetchRequest<NSManagedObject>) -> Void) {
|
||||||
|
|
||||||
_ = from?.applyToFetchRequest(
|
_ = from.applyToFetchRequest(
|
||||||
fetchRequest,
|
fetchRequest,
|
||||||
context: context,
|
context: context,
|
||||||
applyAffectedStores: false
|
applyAffectedStores: false
|
||||||
)
|
)
|
||||||
applyFetchClauses(fetchRequest)
|
applyFetchClauses(fetchRequest)
|
||||||
|
|
||||||
if let from = from {
|
self.reapplyAffectedStores = { fetchRequest, context in
|
||||||
|
|
||||||
self.reapplyAffectedStores = { fetchRequest, context in
|
return from.applyAffectedStoresForFetchedRequest(fetchRequest, context: context)
|
||||||
|
|
||||||
return from.applyAffectedStoresForFetchedRequest(fetchRequest, context: context)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
|
|
||||||
guard let from = (fetchRequest.entity.flatMap { $0.managedObjectClassName }).flatMap(NSClassFromString).flatMap({ From<T>($0 as! T.Type) }) else {
|
|
||||||
|
|
||||||
CoreStore.abort("Attempted to create a \(CoreStoreFetchedResultsController.self) without a \(cs_typeName(From<T>.self)) clause or an \(cs_typeName(NSEntityDescription.self)).")
|
|
||||||
}
|
|
||||||
|
|
||||||
self.reapplyAffectedStores = { fetchRequest, context in
|
|
||||||
|
|
||||||
return from.applyAffectedStoresForFetchedRequest(fetchRequest, context: context)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
super.init(
|
super.init(
|
||||||
|
|||||||
@@ -201,7 +201,7 @@ public extension UnsafeDataTransaction {
|
|||||||
// MARK: - Private
|
// MARK: - Private
|
||||||
|
|
||||||
@available(OSX 10.12, *)
|
@available(OSX 10.12, *)
|
||||||
fileprivate func createFRC<T: NSManagedObject>(fromContext context: NSManagedObjectContext, from: From<T>? = nil, sectionBy: SectionBy? = nil, fetchClauses: [FetchClause]) -> NSFetchedResultsController<T> {
|
fileprivate func createFRC<T: NSManagedObject>(fromContext context: NSManagedObjectContext, from: From<T>, sectionBy: SectionBy? = nil, fetchClauses: [FetchClause]) -> NSFetchedResultsController<T> {
|
||||||
|
|
||||||
let controller = CoreStoreFetchedResultsController(
|
let controller = CoreStoreFetchedResultsController(
|
||||||
context: context,
|
context: context,
|
||||||
|
|||||||
@@ -68,12 +68,12 @@ public extension CSUnsafeDataTransaction {
|
|||||||
// MARK: - Private
|
// MARK: - Private
|
||||||
|
|
||||||
@available(OSX 10.12, *)
|
@available(OSX 10.12, *)
|
||||||
fileprivate func createFRC(fromContext context: NSManagedObjectContext, from: CSFrom? = nil, sectionBy: CSSectionBy?, fetchClauses: [CSFetchClause]) -> NSFetchedResultsController<NSManagedObject> {
|
fileprivate func createFRC(fromContext context: NSManagedObjectContext, from: CSFrom, sectionBy: CSSectionBy?, fetchClauses: [CSFetchClause]) -> NSFetchedResultsController<NSManagedObject> {
|
||||||
|
|
||||||
let controller = CoreStoreFetchedResultsController(
|
let controller = CoreStoreFetchedResultsController(
|
||||||
context: context,
|
context: context,
|
||||||
fetchRequest: CoreStoreFetchRequest().dynamicCast(),
|
fetchRequest: CoreStoreFetchRequest().dynamicCast(),
|
||||||
from: from?.bridgeToSwift,
|
from: from.bridgeToSwift,
|
||||||
sectionBy: sectionBy?.bridgeToSwift,
|
sectionBy: sectionBy?.bridgeToSwift,
|
||||||
applyFetchClauses: { (fetchRequest) in
|
applyFetchClauses: { (fetchRequest) in
|
||||||
|
|
||||||
|
|||||||
@@ -272,7 +272,7 @@ public final class ObjectMonitor<D: DynamicObject>: Equatable {
|
|||||||
let fetchedResultsController = CoreStoreFetchedResultsController(
|
let fetchedResultsController = CoreStoreFetchedResultsController(
|
||||||
context: context,
|
context: context,
|
||||||
fetchRequest: fetchRequest.dynamicCast(),
|
fetchRequest: fetchRequest.dynamicCast(),
|
||||||
from: nil as From<ObjectType>?,
|
from: From<ObjectType>([objectID.persistentStore?.configurationName]),
|
||||||
applyFetchClauses: Where("SELF", isEqualTo: objectID).applyToFetchRequest
|
applyFetchClauses: Where("SELF", isEqualTo: objectID).applyToFetchRequest
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user