mirror of
https://github.com/JohnEstropia/CoreStore.git
synced 2026-03-30 22:31:59 +02:00
NSFetchRequest.affectedStores bug workaround
This commit is contained in:
@@ -139,10 +139,10 @@
|
|||||||
B52557881D02DE8100E51965 /* FetchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52557871D02DE8100E51965 /* FetchTests.swift */; };
|
B52557881D02DE8100E51965 /* FetchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52557871D02DE8100E51965 /* FetchTests.swift */; };
|
||||||
B52557891D02DE8100E51965 /* FetchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52557871D02DE8100E51965 /* FetchTests.swift */; };
|
B52557891D02DE8100E51965 /* FetchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52557871D02DE8100E51965 /* FetchTests.swift */; };
|
||||||
B525578A1D02DE8100E51965 /* FetchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52557871D02DE8100E51965 /* FetchTests.swift */; };
|
B525578A1D02DE8100E51965 /* FetchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52557871D02DE8100E51965 /* FetchTests.swift */; };
|
||||||
B52661401CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526613F1CADD585007B85D9 /* CoreStoreFetchRequest.swift */; };
|
B52661401CADD585007B85D9 /* CoreStoreFetchRequest+CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526613F1CADD585007B85D9 /* CoreStoreFetchRequest+CoreStore.swift */; };
|
||||||
B52661421CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526613F1CADD585007B85D9 /* CoreStoreFetchRequest.swift */; };
|
B52661421CADD585007B85D9 /* CoreStoreFetchRequest+CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526613F1CADD585007B85D9 /* CoreStoreFetchRequest+CoreStore.swift */; };
|
||||||
B52661431CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526613F1CADD585007B85D9 /* CoreStoreFetchRequest.swift */; };
|
B52661431CADD585007B85D9 /* CoreStoreFetchRequest+CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526613F1CADD585007B85D9 /* CoreStoreFetchRequest+CoreStore.swift */; };
|
||||||
B52661441CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526613F1CADD585007B85D9 /* CoreStoreFetchRequest.swift */; };
|
B52661441CADD585007B85D9 /* CoreStoreFetchRequest+CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526613F1CADD585007B85D9 /* CoreStoreFetchRequest+CoreStore.swift */; };
|
||||||
B529C2041CA4A2DB007E7EBD /* CSSaveResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B529C2031CA4A2DB007E7EBD /* CSSaveResult.swift */; };
|
B529C2041CA4A2DB007E7EBD /* CSSaveResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B529C2031CA4A2DB007E7EBD /* CSSaveResult.swift */; };
|
||||||
B529C2061CA4A2DB007E7EBD /* CSSaveResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B529C2031CA4A2DB007E7EBD /* CSSaveResult.swift */; };
|
B529C2061CA4A2DB007E7EBD /* CSSaveResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B529C2031CA4A2DB007E7EBD /* CSSaveResult.swift */; };
|
||||||
B529C2071CA4A2DC007E7EBD /* CSSaveResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B529C2031CA4A2DB007E7EBD /* CSSaveResult.swift */; };
|
B529C2071CA4A2DC007E7EBD /* CSSaveResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B529C2031CA4A2DB007E7EBD /* CSSaveResult.swift */; };
|
||||||
@@ -599,7 +599,7 @@
|
|||||||
B525577F1D029D2500E51965 /* TweakTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TweakTests.swift; sourceTree = "<group>"; };
|
B525577F1D029D2500E51965 /* TweakTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TweakTests.swift; sourceTree = "<group>"; };
|
||||||
B52557831D02A07400E51965 /* SectionByTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SectionByTests.swift; sourceTree = "<group>"; };
|
B52557831D02A07400E51965 /* SectionByTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SectionByTests.swift; sourceTree = "<group>"; };
|
||||||
B52557871D02DE8100E51965 /* FetchTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FetchTests.swift; sourceTree = "<group>"; };
|
B52557871D02DE8100E51965 /* FetchTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FetchTests.swift; sourceTree = "<group>"; };
|
||||||
B526613F1CADD585007B85D9 /* CoreStoreFetchRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreStoreFetchRequest.swift; sourceTree = "<group>"; };
|
B526613F1CADD585007B85D9 /* CoreStoreFetchRequest+CoreStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CoreStoreFetchRequest+CoreStore.swift"; sourceTree = "<group>"; };
|
||||||
B529C2031CA4A2DB007E7EBD /* CSSaveResult.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSSaveResult.swift; sourceTree = "<group>"; };
|
B529C2031CA4A2DB007E7EBD /* CSSaveResult.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSSaveResult.swift; sourceTree = "<group>"; };
|
||||||
B52DD1741BE1F8CC00949AFE /* CoreStore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CoreStore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
B52DD1741BE1F8CC00949AFE /* CoreStore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CoreStore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
B52DD17D1BE1F8CC00949AFE /* CoreStoreTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CoreStoreTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
B52DD17D1BE1F8CC00949AFE /* CoreStoreTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CoreStoreTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
@@ -1181,7 +1181,7 @@
|
|||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
B5C976E61C6E3A5900B1AF90 /* CoreStoreFetchedResultsController.swift */,
|
B5C976E61C6E3A5900B1AF90 /* CoreStoreFetchedResultsController.swift */,
|
||||||
B526613F1CADD585007B85D9 /* CoreStoreFetchRequest.swift */,
|
B526613F1CADD585007B85D9 /* CoreStoreFetchRequest+CoreStore.swift */,
|
||||||
B54A6A541BA15F2A007870FD /* FetchedResultsControllerDelegate.swift */,
|
B54A6A541BA15F2A007870FD /* FetchedResultsControllerDelegate.swift */,
|
||||||
B5E834BA1B7691F3001D3D50 /* Functions.swift */,
|
B5E834BA1B7691F3001D3D50 /* Functions.swift */,
|
||||||
B5FAD6AB1B51285300714891 /* MigrationManager.swift */,
|
B5FAD6AB1B51285300714891 /* MigrationManager.swift */,
|
||||||
@@ -1421,9 +1421,11 @@
|
|||||||
};
|
};
|
||||||
82BA18881C4BBCBA00A0916E = {
|
82BA18881C4BBCBA00A0916E = {
|
||||||
CreatedOnToolsVersion = 7.2;
|
CreatedOnToolsVersion = 7.2;
|
||||||
|
LastSwiftMigration = 0800;
|
||||||
};
|
};
|
||||||
82BA18911C4BBCBA00A0916E = {
|
82BA18911C4BBCBA00A0916E = {
|
||||||
CreatedOnToolsVersion = 7.2;
|
CreatedOnToolsVersion = 7.2;
|
||||||
|
LastSwiftMigration = 0800;
|
||||||
};
|
};
|
||||||
B52DD1731BE1F8CC00949AFE = {
|
B52DD1731BE1F8CC00949AFE = {
|
||||||
CreatedOnToolsVersion = 7.1;
|
CreatedOnToolsVersion = 7.1;
|
||||||
@@ -1563,7 +1565,7 @@
|
|||||||
B53FB9FE1CAB2D2F00F0D40A /* CSMigrationResult.swift in Sources */,
|
B53FB9FE1CAB2D2F00F0D40A /* CSMigrationResult.swift in Sources */,
|
||||||
B5DBE2D21C991B3E00B5CEFA /* CSDataStack.swift in Sources */,
|
B5DBE2D21C991B3E00B5CEFA /* CSDataStack.swift in Sources */,
|
||||||
B50392F91C478FF3009900CA /* NSManagedObject+Transaction.swift in Sources */,
|
B50392F91C478FF3009900CA /* NSManagedObject+Transaction.swift in Sources */,
|
||||||
B52661401CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */,
|
B52661401CADD585007B85D9 /* CoreStoreFetchRequest+CoreStore.swift in Sources */,
|
||||||
B53FBA181CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */,
|
B53FBA181CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */,
|
||||||
B5202CFA1C04688100DED140 /* NSFetchedResultsController+Convenience.swift in Sources */,
|
B5202CFA1C04688100DED140 /* NSFetchedResultsController+Convenience.swift in Sources */,
|
||||||
B5519A591CA2008C002BEF78 /* CSBaseDataTransaction.swift in Sources */,
|
B5519A591CA2008C002BEF78 /* CSBaseDataTransaction.swift in Sources */,
|
||||||
@@ -1714,7 +1716,7 @@
|
|||||||
82BA18B41C4BBD3900A0916E /* BaseDataTransaction+Importing.swift in Sources */,
|
82BA18B41C4BBD3900A0916E /* BaseDataTransaction+Importing.swift in Sources */,
|
||||||
B53FBA1A1CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */,
|
B53FBA1A1CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */,
|
||||||
82BA18CA1C4BBD5900A0916E /* MigrationResult.swift in Sources */,
|
82BA18CA1C4BBD5900A0916E /* MigrationResult.swift in Sources */,
|
||||||
B52661421CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */,
|
B52661421CADD585007B85D9 /* CoreStoreFetchRequest+CoreStore.swift in Sources */,
|
||||||
B5519A5A1CA2008C002BEF78 /* CSBaseDataTransaction.swift in Sources */,
|
B5519A5A1CA2008C002BEF78 /* CSBaseDataTransaction.swift in Sources */,
|
||||||
B5ECDBE11CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift in Sources */,
|
B5ECDBE11CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift in Sources */,
|
||||||
82BA18C11C4BBD5300A0916E /* CoreStore+Observing.swift in Sources */,
|
82BA18C11C4BBD5300A0916E /* CoreStore+Observing.swift in Sources */,
|
||||||
@@ -1864,7 +1866,7 @@
|
|||||||
B52DD1C71BE1F94600949AFE /* NSManagedObjectContext+Querying.swift in Sources */,
|
B52DD1C71BE1F94600949AFE /* NSManagedObjectContext+Querying.swift in Sources */,
|
||||||
B52DD1C81BE1F94600949AFE /* NSManagedObjectContext+Setup.swift in Sources */,
|
B52DD1C81BE1F94600949AFE /* NSManagedObjectContext+Setup.swift in Sources */,
|
||||||
B52DD1C31BE1F94600949AFE /* NotificationObserver.swift in Sources */,
|
B52DD1C31BE1F94600949AFE /* NotificationObserver.swift in Sources */,
|
||||||
B52661441CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */,
|
B52661441CADD585007B85D9 /* CoreStoreFetchRequest+CoreStore.swift in Sources */,
|
||||||
B52DD1A81BE1F93200949AFE /* DataStack+Querying.swift in Sources */,
|
B52DD1A81BE1F93200949AFE /* DataStack+Querying.swift in Sources */,
|
||||||
B5220E221D130818009BC71E /* CSSectionBy.swift in Sources */,
|
B5220E221D130818009BC71E /* CSSectionBy.swift in Sources */,
|
||||||
B52DD1BC1BE1F94000949AFE /* MigrationResult.swift in Sources */,
|
B52DD1BC1BE1F94000949AFE /* MigrationResult.swift in Sources */,
|
||||||
@@ -2009,7 +2011,7 @@
|
|||||||
B53FBA011CAB2D2F00F0D40A /* CSMigrationResult.swift in Sources */,
|
B53FBA011CAB2D2F00F0D40A /* CSMigrationResult.swift in Sources */,
|
||||||
B5DBE2D41C991B3E00B5CEFA /* CSDataStack.swift in Sources */,
|
B5DBE2D41C991B3E00B5CEFA /* CSDataStack.swift in Sources */,
|
||||||
B50392FA1C47963F009900CA /* NSManagedObject+Transaction.swift in Sources */,
|
B50392FA1C47963F009900CA /* NSManagedObject+Transaction.swift in Sources */,
|
||||||
B52661431CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */,
|
B52661431CADD585007B85D9 /* CoreStoreFetchRequest+CoreStore.swift in Sources */,
|
||||||
B53FBA1B1CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */,
|
B53FBA1B1CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */,
|
||||||
B5519A5B1CA2008C002BEF78 /* CSBaseDataTransaction.swift in Sources */,
|
B5519A5B1CA2008C002BEF78 /* CSBaseDataTransaction.swift in Sources */,
|
||||||
B5ECDBE21CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift in Sources */,
|
B5ECDBE21CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift in Sources */,
|
||||||
@@ -2251,6 +2253,7 @@
|
|||||||
2F03A54719C5C6DA005002A5 /* Debug */ = {
|
2F03A54719C5C6DA005002A5 /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
|
APPLICATION_EXTENSION_API_ONLY = NO;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
"DEBUG=1",
|
"DEBUG=1",
|
||||||
@@ -2270,6 +2273,7 @@
|
|||||||
2F03A54819C5C6DA005002A5 /* Release */ = {
|
2F03A54819C5C6DA005002A5 /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
|
APPLICATION_EXTENSION_API_ONLY = NO;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
INFOPLIST_FILE = CoreStoreTests/Info.plist;
|
INFOPLIST_FILE = CoreStoreTests/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||||
@@ -2297,6 +2301,7 @@
|
|||||||
SDKROOT = appletvos;
|
SDKROOT = appletvos;
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
|
SWIFT_VERSION = 3.0;
|
||||||
TARGETED_DEVICE_FAMILY = 3;
|
TARGETED_DEVICE_FAMILY = 3;
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
@@ -2316,6 +2321,7 @@
|
|||||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||||
SDKROOT = appletvos;
|
SDKROOT = appletvos;
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
|
SWIFT_VERSION = 3.0;
|
||||||
TARGETED_DEVICE_FAMILY = 3;
|
TARGETED_DEVICE_FAMILY = 3;
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
@@ -2323,6 +2329,7 @@
|
|||||||
82BA189C1C4BBCBA00A0916E /* Debug */ = {
|
82BA189C1C4BBCBA00A0916E /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
|
APPLICATION_EXTENSION_API_ONLY = NO;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
GCC_NO_COMMON_BLOCKS = YES;
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
INFOPLIST_FILE = CoreStoreTests/Info.plist;
|
INFOPLIST_FILE = CoreStoreTests/Info.plist;
|
||||||
@@ -2332,6 +2339,7 @@
|
|||||||
SDKROOT = appletvos;
|
SDKROOT = appletvos;
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "CoreStoreTests/CoreStoreTests-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "CoreStoreTests/CoreStoreTests-Bridging-Header.h";
|
||||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
|
SWIFT_VERSION = 3.0;
|
||||||
TARGETED_DEVICE_FAMILY = 3;
|
TARGETED_DEVICE_FAMILY = 3;
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
@@ -2339,6 +2347,7 @@
|
|||||||
82BA189D1C4BBCBA00A0916E /* Release */ = {
|
82BA189D1C4BBCBA00A0916E /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
|
APPLICATION_EXTENSION_API_ONLY = NO;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
GCC_NO_COMMON_BLOCKS = YES;
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
@@ -2348,6 +2357,7 @@
|
|||||||
PRODUCT_NAME = CoreStoreTests;
|
PRODUCT_NAME = CoreStoreTests;
|
||||||
SDKROOT = appletvos;
|
SDKROOT = appletvos;
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "CoreStoreTests/CoreStoreTests-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "CoreStoreTests/CoreStoreTests-Bridging-Header.h";
|
||||||
|
SWIFT_VERSION = 3.0;
|
||||||
TARGETED_DEVICE_FAMILY = 3;
|
TARGETED_DEVICE_FAMILY = 3;
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
@@ -2401,6 +2411,7 @@
|
|||||||
B52DD1871BE1F8CD00949AFE /* Debug */ = {
|
B52DD1871BE1F8CD00949AFE /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
|
APPLICATION_EXTENSION_API_ONLY = NO;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_IDENTITY = "-";
|
CODE_SIGN_IDENTITY = "-";
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
@@ -2420,6 +2431,7 @@
|
|||||||
B52DD1881BE1F8CD00949AFE /* Release */ = {
|
B52DD1881BE1F8CD00949AFE /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
|
APPLICATION_EXTENSION_API_ONLY = NO;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_IDENTITY = "-";
|
CODE_SIGN_IDENTITY = "-";
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
|
|||||||
@@ -94,9 +94,9 @@ final class StorageInterfaceTests: XCTestCase {
|
|||||||
dynamic func test_ThatFileURLSQLiteStores_ConfigureCorrectly() {
|
dynamic func test_ThatFileURLSQLiteStores_ConfigureCorrectly() {
|
||||||
|
|
||||||
let fileURL = NSURL(fileURLWithPath: NSTemporaryDirectory())
|
let fileURL = NSURL(fileURLWithPath: NSTemporaryDirectory())
|
||||||
.URLByAppendingPathComponent(NSUUID().UUIDString, isDirectory: false)!
|
.appendingPathComponent(NSUUID().uuidString, isDirectory: false)!
|
||||||
.URLByAppendingPathExtension("db")!
|
.appendingPathExtension("db")
|
||||||
let bundles = [NSBundle(forClass: self.dynamicType)]
|
let bundles = [Bundle(for: type(of: self))]
|
||||||
|
|
||||||
let store = SQLiteStore(
|
let store = SQLiteStore(
|
||||||
fileURL: fileURL,
|
fileURL: fileURL,
|
||||||
@@ -149,8 +149,8 @@ final class StorageInterfaceTests: XCTestCase {
|
|||||||
in: .userDomainMask).first!
|
in: .userDomainMask).first!
|
||||||
|
|
||||||
let legacyDefaultFileURL = legacyDefaultRootDirectory
|
let legacyDefaultFileURL = legacyDefaultRootDirectory
|
||||||
.URLByAppendingPathComponent(DataStack.applicationName, isDirectory: false)!
|
.appendingPathComponent(DataStack.applicationName, isDirectory: false)
|
||||||
.URLByAppendingPathExtension("sqlite")!
|
.appendingPathExtension("sqlite")
|
||||||
|
|
||||||
XCTAssertEqual(LegacySQLiteStore.defaultRootDirectory, legacyDefaultRootDirectory)
|
XCTAssertEqual(LegacySQLiteStore.defaultRootDirectory, legacyDefaultRootDirectory)
|
||||||
XCTAssertEqual(LegacySQLiteStore.defaultFileURL, legacyDefaultFileURL)
|
XCTAssertEqual(LegacySQLiteStore.defaultFileURL, legacyDefaultFileURL)
|
||||||
@@ -173,9 +173,9 @@ final class StorageInterfaceTests: XCTestCase {
|
|||||||
dynamic func test_ThatFileURLLegacySQLiteStores_ConfigureCorrectly() {
|
dynamic func test_ThatFileURLLegacySQLiteStores_ConfigureCorrectly() {
|
||||||
|
|
||||||
let fileURL = NSURL(fileURLWithPath: NSTemporaryDirectory())
|
let fileURL = NSURL(fileURLWithPath: NSTemporaryDirectory())
|
||||||
.URLByAppendingPathComponent(NSUUID().UUIDString, isDirectory: false)!
|
.appendingPathComponent(NSUUID().uuidString, isDirectory: false)!
|
||||||
.URLByAppendingPathExtension("db")!
|
.appendingPathExtension("db")
|
||||||
let bundles = [NSBundle(forClass: self.dynamicType)]
|
let bundles = [Bundle(for: type(of: self))]
|
||||||
|
|
||||||
let store = LegacySQLiteStore(
|
let store = LegacySQLiteStore(
|
||||||
fileURL: fileURL,
|
fileURL: fileURL,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// CoreStoreFetchRequest.swift
|
// CoreStoreFetchRequest+CoreStore.swift
|
||||||
// CoreStore
|
// CoreStore
|
||||||
//
|
//
|
||||||
// Copyright © 2016 John Rommel Estropia
|
// Copyright © 2016 John Rommel Estropia
|
||||||
@@ -29,9 +29,7 @@ import CoreData
|
|||||||
|
|
||||||
// MARK: - CoreStoreFetchRequest
|
// MARK: - CoreStoreFetchRequest
|
||||||
|
|
||||||
// Bugfix for NSFetchRequest messing up memory management for `affectedStores`
|
internal extension CoreStoreFetchRequest {
|
||||||
// http://stackoverflow.com/questions/14396375/nsfetchedresultscontroller-crashes-in-ios-6-if-affectedstores-is-specified
|
|
||||||
internal final class CoreStoreFetchRequest<T: NSFetchRequestResult>: NSFetchRequest<NSFetchRequestResult> {
|
|
||||||
|
|
||||||
// MARK: Internal
|
// MARK: Internal
|
||||||
|
|
||||||
@@ -40,22 +38,4 @@ internal final class CoreStoreFetchRequest<T: NSFetchRequestResult>: NSFetchRequ
|
|||||||
|
|
||||||
return unsafeBitCast(self, to: NSFetchRequest<U>.self)
|
return unsafeBitCast(self, to: NSFetchRequest<U>.self)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// MARK: NSFetchRequest
|
|
||||||
|
|
||||||
@objc
|
|
||||||
dynamic override var affectedStores: [NSPersistentStore]? {
|
|
||||||
|
|
||||||
get {
|
|
||||||
|
|
||||||
// This forced-casting is needed to fix an ARC bug with "affectedStores" mis-retaining the array
|
|
||||||
let affectedStores: NSArray? = super.affectedStores.flatMap({ NSArray(array: $0) } )
|
|
||||||
return affectedStores as? [NSPersistentStore]
|
|
||||||
}
|
|
||||||
set {
|
|
||||||
|
|
||||||
super.affectedStores = newValue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ internal extension NSManagedObjectContext {
|
|||||||
@nonobjc
|
@nonobjc
|
||||||
internal func fetchOne<T: NSManagedObject>(_ from: From<T>, _ fetchClauses: [FetchClause]) -> T? {
|
internal func fetchOne<T: NSManagedObject>(_ from: From<T>, _ fetchClauses: [FetchClause]) -> T? {
|
||||||
|
|
||||||
let fetchRequest = CoreStoreFetchRequest<T>()
|
let fetchRequest = CoreStoreFetchRequest()
|
||||||
let storeFound = from.applyToFetchRequest(fetchRequest, context: self)
|
let storeFound = from.applyToFetchRequest(fetchRequest, context: self)
|
||||||
|
|
||||||
fetchRequest.fetchLimit = 1
|
fetchRequest.fetchLimit = 1
|
||||||
@@ -134,7 +134,7 @@ internal extension NSManagedObjectContext {
|
|||||||
@nonobjc
|
@nonobjc
|
||||||
internal func fetchAll<T: NSManagedObject>(_ from: From<T>, _ fetchClauses: [FetchClause]) -> [T]? {
|
internal func fetchAll<T: NSManagedObject>(_ from: From<T>, _ fetchClauses: [FetchClause]) -> [T]? {
|
||||||
|
|
||||||
let fetchRequest = CoreStoreFetchRequest<T>()
|
let fetchRequest = CoreStoreFetchRequest()
|
||||||
let storeFound = from.applyToFetchRequest(fetchRequest, context: self)
|
let storeFound = from.applyToFetchRequest(fetchRequest, context: self)
|
||||||
|
|
||||||
fetchRequest.fetchLimit = 0
|
fetchRequest.fetchLimit = 0
|
||||||
@@ -187,7 +187,7 @@ internal extension NSManagedObjectContext {
|
|||||||
@nonobjc
|
@nonobjc
|
||||||
internal func fetchCount<T: NSManagedObject>(_ from: From<T>, _ fetchClauses: [FetchClause]) -> Int? {
|
internal func fetchCount<T: NSManagedObject>(_ from: From<T>, _ fetchClauses: [FetchClause]) -> Int? {
|
||||||
|
|
||||||
let fetchRequest = CoreStoreFetchRequest<T>()
|
let fetchRequest = CoreStoreFetchRequest()
|
||||||
let storeFound = from.applyToFetchRequest(fetchRequest, context: self)
|
let storeFound = from.applyToFetchRequest(fetchRequest, context: self)
|
||||||
fetchClauses.forEach { $0.applyToFetchRequest(fetchRequest) }
|
fetchClauses.forEach { $0.applyToFetchRequest(fetchRequest) }
|
||||||
|
|
||||||
@@ -237,7 +237,7 @@ internal extension NSManagedObjectContext {
|
|||||||
@nonobjc
|
@nonobjc
|
||||||
internal func fetchObjectID<T: NSManagedObject>(_ from: From<T>, _ fetchClauses: [FetchClause]) -> NSManagedObjectID? {
|
internal func fetchObjectID<T: NSManagedObject>(_ from: From<T>, _ fetchClauses: [FetchClause]) -> NSManagedObjectID? {
|
||||||
|
|
||||||
let fetchRequest = CoreStoreFetchRequest<NSManagedObjectID>()
|
let fetchRequest = CoreStoreFetchRequest()
|
||||||
let storeFound = from.applyToFetchRequest(fetchRequest, context: self)
|
let storeFound = from.applyToFetchRequest(fetchRequest, context: self)
|
||||||
|
|
||||||
fetchRequest.fetchLimit = 1
|
fetchRequest.fetchLimit = 1
|
||||||
@@ -290,7 +290,7 @@ internal extension NSManagedObjectContext {
|
|||||||
@nonobjc
|
@nonobjc
|
||||||
internal func fetchObjectIDs<T: NSManagedObject>(_ from: From<T>, _ fetchClauses: [FetchClause]) -> [NSManagedObjectID]? {
|
internal func fetchObjectIDs<T: NSManagedObject>(_ from: From<T>, _ fetchClauses: [FetchClause]) -> [NSManagedObjectID]? {
|
||||||
|
|
||||||
let fetchRequest = CoreStoreFetchRequest<NSManagedObjectID>()
|
let fetchRequest = CoreStoreFetchRequest()
|
||||||
let storeFound = from.applyToFetchRequest(fetchRequest, context: self)
|
let storeFound = from.applyToFetchRequest(fetchRequest, context: self)
|
||||||
|
|
||||||
fetchRequest.fetchLimit = 0
|
fetchRequest.fetchLimit = 0
|
||||||
@@ -343,7 +343,7 @@ internal extension NSManagedObjectContext {
|
|||||||
@nonobjc
|
@nonobjc
|
||||||
internal func deleteAll<T: NSManagedObject>(_ from: From<T>, _ deleteClauses: [DeleteClause]) -> Int? {
|
internal func deleteAll<T: NSManagedObject>(_ from: From<T>, _ deleteClauses: [DeleteClause]) -> Int? {
|
||||||
|
|
||||||
let fetchRequest = CoreStoreFetchRequest<T>()
|
let fetchRequest = CoreStoreFetchRequest()
|
||||||
let storeFound = from.applyToFetchRequest(fetchRequest, context: self)
|
let storeFound = from.applyToFetchRequest(fetchRequest, context: self)
|
||||||
|
|
||||||
fetchRequest.fetchLimit = 0
|
fetchRequest.fetchLimit = 0
|
||||||
@@ -406,7 +406,7 @@ internal extension NSManagedObjectContext {
|
|||||||
@nonobjc
|
@nonobjc
|
||||||
internal func queryValue<T: NSManagedObject, U: SelectValueResultType>(_ from: From<T>, _ selectClause: Select<U>, _ queryClauses: [QueryClause]) -> U? {
|
internal func queryValue<T: NSManagedObject, U: SelectValueResultType>(_ from: From<T>, _ selectClause: Select<U>, _ queryClauses: [QueryClause]) -> U? {
|
||||||
|
|
||||||
let fetchRequest = CoreStoreFetchRequest<NSFetchRequestResult>()
|
let fetchRequest = CoreStoreFetchRequest()
|
||||||
let storeFound = from.applyToFetchRequest(fetchRequest, context: self)
|
let storeFound = from.applyToFetchRequest(fetchRequest, context: self)
|
||||||
|
|
||||||
fetchRequest.fetchLimit = 0
|
fetchRequest.fetchLimit = 0
|
||||||
@@ -500,7 +500,7 @@ internal extension NSManagedObjectContext {
|
|||||||
@nonobjc
|
@nonobjc
|
||||||
internal func queryAttributes<T: NSManagedObject>(_ from: From<T>, _ selectClause: Select<NSDictionary>, _ queryClauses: [QueryClause]) -> [[String: Any]]? {
|
internal func queryAttributes<T: NSManagedObject>(_ from: From<T>, _ selectClause: Select<NSDictionary>, _ queryClauses: [QueryClause]) -> [[String: Any]]? {
|
||||||
|
|
||||||
let fetchRequest = CoreStoreFetchRequest<NSFetchRequestResult>()
|
let fetchRequest = CoreStoreFetchRequest()
|
||||||
let storeFound = from.applyToFetchRequest(fetchRequest, context: self)
|
let storeFound = from.applyToFetchRequest(fetchRequest, context: self)
|
||||||
|
|
||||||
fetchRequest.fetchLimit = 0
|
fetchRequest.fetchLimit = 0
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ internal extension NSManagedObjectContext {
|
|||||||
@nonobjc
|
@nonobjc
|
||||||
internal func fetchOne(_ from: CSFrom, _ fetchClauses: [CSFetchClause]) -> NSManagedObject? {
|
internal func fetchOne(_ from: CSFrom, _ fetchClauses: [CSFetchClause]) -> NSManagedObject? {
|
||||||
|
|
||||||
let fetchRequest = CoreStoreFetchRequest<NSManagedObject>()
|
let fetchRequest = CoreStoreFetchRequest()
|
||||||
let storeFound = from.bridgeToSwift.applyToFetchRequest(fetchRequest, context: self)
|
let storeFound = from.bridgeToSwift.applyToFetchRequest(fetchRequest, context: self)
|
||||||
|
|
||||||
fetchRequest.fetchLimit = 1
|
fetchRequest.fetchLimit = 1
|
||||||
@@ -53,7 +53,7 @@ internal extension NSManagedObjectContext {
|
|||||||
@nonobjc
|
@nonobjc
|
||||||
internal func fetchAll<T: NSManagedObject>(_ from: CSFrom, _ fetchClauses: [CSFetchClause]) -> [T]? {
|
internal func fetchAll<T: NSManagedObject>(_ from: CSFrom, _ fetchClauses: [CSFetchClause]) -> [T]? {
|
||||||
|
|
||||||
let fetchRequest = CoreStoreFetchRequest<T>()
|
let fetchRequest = CoreStoreFetchRequest()
|
||||||
let storeFound = from.bridgeToSwift.applyToFetchRequest(fetchRequest, context: self)
|
let storeFound = from.bridgeToSwift.applyToFetchRequest(fetchRequest, context: self)
|
||||||
|
|
||||||
fetchRequest.fetchLimit = 0
|
fetchRequest.fetchLimit = 0
|
||||||
@@ -70,7 +70,7 @@ internal extension NSManagedObjectContext {
|
|||||||
@nonobjc
|
@nonobjc
|
||||||
internal func fetchCount(_ from: CSFrom, _ fetchClauses: [CSFetchClause]) -> Int? {
|
internal func fetchCount(_ from: CSFrom, _ fetchClauses: [CSFetchClause]) -> Int? {
|
||||||
|
|
||||||
let fetchRequest = CoreStoreFetchRequest<NSManagedObject>()
|
let fetchRequest = CoreStoreFetchRequest()
|
||||||
let storeFound = from.bridgeToSwift.applyToFetchRequest(fetchRequest, context: self)
|
let storeFound = from.bridgeToSwift.applyToFetchRequest(fetchRequest, context: self)
|
||||||
fetchClauses.forEach { $0.applyToFetchRequest(fetchRequest) }
|
fetchClauses.forEach { $0.applyToFetchRequest(fetchRequest) }
|
||||||
|
|
||||||
@@ -84,7 +84,7 @@ internal extension NSManagedObjectContext {
|
|||||||
@nonobjc
|
@nonobjc
|
||||||
internal func fetchObjectID(_ from: CSFrom, _ fetchClauses: [CSFetchClause]) -> NSManagedObjectID? {
|
internal func fetchObjectID(_ from: CSFrom, _ fetchClauses: [CSFetchClause]) -> NSManagedObjectID? {
|
||||||
|
|
||||||
let fetchRequest = CoreStoreFetchRequest<NSManagedObjectID>()
|
let fetchRequest = CoreStoreFetchRequest()
|
||||||
let storeFound = from.bridgeToSwift.applyToFetchRequest(fetchRequest, context: self)
|
let storeFound = from.bridgeToSwift.applyToFetchRequest(fetchRequest, context: self)
|
||||||
|
|
||||||
fetchRequest.fetchLimit = 1
|
fetchRequest.fetchLimit = 1
|
||||||
@@ -101,7 +101,7 @@ internal extension NSManagedObjectContext {
|
|||||||
@nonobjc
|
@nonobjc
|
||||||
internal func fetchObjectIDs(_ from: CSFrom, _ fetchClauses: [CSFetchClause]) -> [NSManagedObjectID]? {
|
internal func fetchObjectIDs(_ from: CSFrom, _ fetchClauses: [CSFetchClause]) -> [NSManagedObjectID]? {
|
||||||
|
|
||||||
let fetchRequest = CoreStoreFetchRequest<NSManagedObjectID>()
|
let fetchRequest = CoreStoreFetchRequest()
|
||||||
let storeFound = from.bridgeToSwift.applyToFetchRequest(fetchRequest, context: self)
|
let storeFound = from.bridgeToSwift.applyToFetchRequest(fetchRequest, context: self)
|
||||||
|
|
||||||
fetchRequest.fetchLimit = 0
|
fetchRequest.fetchLimit = 0
|
||||||
@@ -118,7 +118,7 @@ internal extension NSManagedObjectContext {
|
|||||||
@nonobjc
|
@nonobjc
|
||||||
internal func deleteAll(_ from: CSFrom, _ deleteClauses: [CSDeleteClause]) -> Int? {
|
internal func deleteAll(_ from: CSFrom, _ deleteClauses: [CSDeleteClause]) -> Int? {
|
||||||
|
|
||||||
let fetchRequest = CoreStoreFetchRequest<NSManagedObject>()
|
let fetchRequest = CoreStoreFetchRequest()
|
||||||
let storeFound = from.bridgeToSwift.applyToFetchRequest(fetchRequest, context: self)
|
let storeFound = from.bridgeToSwift.applyToFetchRequest(fetchRequest, context: self)
|
||||||
|
|
||||||
fetchRequest.fetchLimit = 0
|
fetchRequest.fetchLimit = 0
|
||||||
@@ -137,7 +137,7 @@ internal extension NSManagedObjectContext {
|
|||||||
@nonobjc
|
@nonobjc
|
||||||
internal func queryValue(_ from: CSFrom, _ selectClause: CSSelect, _ queryClauses: [CSQueryClause]) -> Any? {
|
internal func queryValue(_ from: CSFrom, _ selectClause: CSSelect, _ queryClauses: [CSQueryClause]) -> Any? {
|
||||||
|
|
||||||
let fetchRequest = CoreStoreFetchRequest<NSFetchRequestResult>()
|
let fetchRequest = CoreStoreFetchRequest()
|
||||||
let storeFound = from.bridgeToSwift.applyToFetchRequest(fetchRequest, context: self)
|
let storeFound = from.bridgeToSwift.applyToFetchRequest(fetchRequest, context: self)
|
||||||
|
|
||||||
fetchRequest.fetchLimit = 0
|
fetchRequest.fetchLimit = 0
|
||||||
@@ -156,7 +156,7 @@ internal extension NSManagedObjectContext {
|
|||||||
@nonobjc
|
@nonobjc
|
||||||
internal func queryAttributes(_ from: CSFrom, _ selectClause: CSSelect, _ queryClauses: [CSQueryClause]) -> [[String: Any]]? {
|
internal func queryAttributes(_ from: CSFrom, _ selectClause: CSSelect, _ queryClauses: [CSQueryClause]) -> [[String: Any]]? {
|
||||||
|
|
||||||
let fetchRequest = CoreStoreFetchRequest<NSFetchRequestResult>()
|
let fetchRequest = CoreStoreFetchRequest()
|
||||||
let storeFound = from.bridgeToSwift.applyToFetchRequest(fetchRequest, context: self)
|
let storeFound = from.bridgeToSwift.applyToFetchRequest(fetchRequest, context: self)
|
||||||
|
|
||||||
fetchRequest.fetchLimit = 0
|
fetchRequest.fetchLimit = 0
|
||||||
|
|||||||
@@ -1015,7 +1015,7 @@ public final class ListMonitor<T: NSManagedObject>: Hashable {
|
|||||||
|
|
||||||
private init(context: NSManagedObjectContext, transactionQueue: DispatchQueue, from: From<T>, sectionBy: SectionBy?, applyFetchClauses: @escaping (_ fetchRequest: NSFetchRequest<NSManagedObject>) -> Void, createAsynchronously: ((ListMonitor<T>) -> Void)?) {
|
private init(context: NSManagedObjectContext, transactionQueue: DispatchQueue, from: From<T>, sectionBy: SectionBy?, applyFetchClauses: @escaping (_ fetchRequest: NSFetchRequest<NSManagedObject>) -> Void, createAsynchronously: ((ListMonitor<T>) -> Void)?) {
|
||||||
|
|
||||||
let fetchRequest = CoreStoreFetchRequest<T>()
|
let fetchRequest = CoreStoreFetchRequest()
|
||||||
fetchRequest.fetchLimit = 0
|
fetchRequest.fetchLimit = 0
|
||||||
fetchRequest.resultType = .managedObjectResultType
|
fetchRequest.resultType = .managedObjectResultType
|
||||||
fetchRequest.fetchBatchSize = 20
|
fetchRequest.fetchBatchSize = 20
|
||||||
@@ -1068,7 +1068,7 @@ public final class ListMonitor<T: NSManagedObject>: Hashable {
|
|||||||
self.isPersistentStoreChanging = true
|
self.isPersistentStoreChanging = true
|
||||||
|
|
||||||
guard let removedStores = (note.userInfo?[NSRemovedPersistentStoresKey] as? [NSPersistentStore]).flatMap(Set.init),
|
guard let removedStores = (note.userInfo?[NSRemovedPersistentStoresKey] as? [NSPersistentStore]).flatMap(Set.init),
|
||||||
!Set((self.fetchedResultsController.fetchRequest as! CoreStoreFetchRequest).affectedStores ?? []).intersection(removedStores).isEmpty else {
|
!Set((self.fetchedResultsController.fetchRequest as Any as! CoreStoreFetchRequest).safeAffectedStores ?? []).intersection(removedStores).isEmpty else {
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -1089,7 +1089,7 @@ public final class ListMonitor<T: NSManagedObject>: Hashable {
|
|||||||
|
|
||||||
if !self.isPendingRefetch {
|
if !self.isPendingRefetch {
|
||||||
|
|
||||||
let previousStores = Set((self.fetchedResultsController.fetchRequest as! CoreStoreFetchRequest).safeAffectedStores ?? [])
|
let previousStores = Set((self.fetchedResultsController.fetchRequest as Any as! CoreStoreFetchRequest).safeAffectedStores ?? [])
|
||||||
let currentStores = previousStores
|
let currentStores = previousStores
|
||||||
.subtracting(note.userInfo?[NSRemovedPersistentStoresKey] as? [NSPersistentStore] ?? [])
|
.subtracting(note.userInfo?[NSRemovedPersistentStoresKey] as? [NSPersistentStore] ?? [])
|
||||||
.union(note.userInfo?[NSAddedPersistentStoresKey] as? [NSPersistentStore] ?? [])
|
.union(note.userInfo?[NSAddedPersistentStoresKey] as? [NSPersistentStore] ?? [])
|
||||||
|
|||||||
@@ -220,7 +220,7 @@ public final class ObjectMonitor<EntityType: NSManagedObject> {
|
|||||||
|
|
||||||
private init(context: NSManagedObjectContext, object: EntityType) {
|
private init(context: NSManagedObjectContext, object: EntityType) {
|
||||||
|
|
||||||
let fetchRequest = CoreStoreFetchRequest<EntityType>()
|
let fetchRequest = CoreStoreFetchRequest()
|
||||||
fetchRequest.entity = object.entity
|
fetchRequest.entity = object.entity
|
||||||
fetchRequest.fetchLimit = 0
|
fetchRequest.fetchLimit = 0
|
||||||
fetchRequest.resultType = .managedObjectResultType
|
fetchRequest.resultType = .managedObjectResultType
|
||||||
|
|||||||
Reference in New Issue
Block a user