From 0d4d036a865ff3a2645916361c820325ebfeb5ec Mon Sep 17 00:00:00 2001
From: Thibault Vlacich
Date: Wed, 7 Sep 2016 10:43:36 +0200
Subject: [PATCH 01/15] Add DEBUG flag to the Debug config
---
CoreStore.podspec | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/CoreStore.podspec b/CoreStore.podspec
index 7c1fbed..cb13485 100644
--- a/CoreStore.podspec
+++ b/CoreStore.podspec
@@ -16,8 +16,9 @@ Pod::Spec.new do |s|
s.public_header_files = "Sources/**/*.h"
s.frameworks = "Foundation", "CoreData"
s.requires_arc = true
- s.pod_target_xcconfig = { 'OTHER_SWIFT_FLAGS' => '-D USE_FRAMEWORKS',
+ s.pod_target_xcconfig = { 'OTHER_SWIFT_FLAGS[config=Debug]' => '-D USE_FRAMEWORKS -D DEBUG',
+ 'OTHER_SWIFT_FLAGS[config=Release]' => '-D USE_FRAMEWORKS',
'GCC_PREPROCESSOR_DEFINITIONS' => 'USE_FRAMEWORKS=1' }
-
+
s.dependency "GCDKit", "1.2.6"
-end
\ No newline at end of file
+end
From 4a34012d58f459c65177e6c30271271c7429aae7 Mon Sep 17 00:00:00 2001
From: John Rommel Estropia
Date: Thu, 8 Sep 2016 00:40:58 +0900
Subject: [PATCH 02/15] version bump
---
CoreStore.podspec | 2 +-
Sources/Info.plist | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/CoreStore.podspec b/CoreStore.podspec
index cb13485..4717659 100644
--- a/CoreStore.podspec
+++ b/CoreStore.podspec
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "CoreStore"
- s.version = "2.0.4"
+ s.version = "2.0.5"
s.license = "MIT"
s.summary = "Unleashing the real power of Core Data with the elegance and safety of Swift"
s.homepage = "https://github.com/JohnEstropia/CoreStore"
diff --git a/Sources/Info.plist b/Sources/Info.plist
index 241ef86..38bcc7c 100644
--- a/Sources/Info.plist
+++ b/Sources/Info.plist
@@ -15,7 +15,7 @@
CFBundlePackageType
FMWK
CFBundleShortVersionString
- 2.0.4
+ 2.0.5
CFBundleSignature
????
CFBundleVersion
From f99d3cc21a688ebbbc316abe5f458b4dc620387c Mon Sep 17 00:00:00 2001
From: John Rommel Estropia
Date: Sat, 10 Sep 2016 22:51:33 +0900
Subject: [PATCH 03/15] fix RecreateStoreOnModelMismatch option not working
when an existing xcdatamodel gets updated without adding a new version
---
README.md | 2 +-
Sources/Migrating/DataStack+Migration.swift | 4 ++--
Sources/ObjectiveC/CSSQliteStore.swift | 2 +-
Sources/ObjectiveC/CSStorageInterface.swift | 2 +-
Sources/Setup/DataStack.swift | 4 ++--
Sources/Setup/StorageInterfaces/ICloudStore.swift | 10 +++++++++-
.../Setup/StorageInterfaces/LegacySQLiteStore.swift | 10 +++++++++-
Sources/Setup/StorageInterfaces/SQLiteStore.swift | 10 +++++++++-
Sources/Setup/StorageInterfaces/StorageInterface.swift | 4 ++--
9 files changed, 36 insertions(+), 12 deletions(-)
diff --git a/README.md b/README.md
index b3293a8..4500c76 100644
--- a/README.md
+++ b/README.md
@@ -308,7 +308,7 @@ public protocol LocalStorage: StorageInterface {
var mappingModelBundles: [NSBundle] { get }
var localStorageOptions: LocalStorageOptions { get }
func storeOptionsForOptions(options: LocalStorageOptions) -> [String: AnyObject]?
- func eraseStorageAndWait(soureModel soureModel: NSManagedObjectModel) throws
+ func eraseStorageAndWait(soureModel soureModel: NSManagedObjectModel?) throws
}
```
If you have custom `NSIncrementalStore` or `NSAtomicStore` subclasses, you can implement this protocol and use it similarly to `SQLiteStore`.
diff --git a/Sources/Migrating/DataStack+Migration.swift b/Sources/Migrating/DataStack+Migration.swift
index d8d50cb..0924e85 100644
--- a/Sources/Migrating/DataStack+Migration.swift
+++ b/Sources/Migrating/DataStack+Migration.swift
@@ -223,7 +223,7 @@ public extension DataStack {
do {
- try _ = self.model[metadata].flatMap(storage.eraseStorageAndWait)
+ _ = try storage.eraseStorageAndWait(soureModel: self.model[metadata])
try self.addStorageAndWait(storage)
GCDQueue.Main.async {
@@ -388,7 +388,7 @@ public extension DataStack {
URL: cacheFileURL,
options: storeOptions
)
- try _ = self.model[metadata].flatMap(storage.eraseStorageAndWait)
+ _ = try storage.eraseStorageAndWait(soureModel: self.model[metadata])
try self.createPersistentStoreFromStorage(
storage,
diff --git a/Sources/ObjectiveC/CSSQliteStore.swift b/Sources/ObjectiveC/CSSQliteStore.swift
index 1b0a76c..0170026 100644
--- a/Sources/ObjectiveC/CSSQliteStore.swift
+++ b/Sources/ObjectiveC/CSSQliteStore.swift
@@ -154,7 +154,7 @@ public final class CSSQLiteStore: NSObject, CSLocalStorage, CoreStoreObjectiveCT
Called by the `CSDataStack` to perform actual deletion of the store file from disk. Do not call directly! The `sourceModel` argument is a hint for the existing store's model version. For `CSSQLiteStore`, this converts the database's WAL journaling mode to DELETE before deleting the file.
*/
@objc
- public func eraseStorageAndWait(soureModel soureModel: NSManagedObjectModel, error: NSErrorPointer) -> Bool {
+ public func eraseStorageAndWait(soureModel soureModel: NSManagedObjectModel?, error: NSErrorPointer) -> Bool {
return bridge(error) {
diff --git a/Sources/ObjectiveC/CSStorageInterface.swift b/Sources/ObjectiveC/CSStorageInterface.swift
index 9696d8f..999f5b3 100644
--- a/Sources/ObjectiveC/CSStorageInterface.swift
+++ b/Sources/ObjectiveC/CSStorageInterface.swift
@@ -121,5 +121,5 @@ public protocol CSLocalStorage: CSStorageInterface {
Called by the `CSDataStack` to perform actual deletion of the store file from disk. Do not call directly! The `sourceModel` argument is a hint for the existing store's model version. Implementers can use the `sourceModel` to perform necessary store operations. (SQLite stores for example, can convert WAL journaling mode to DELETE before deleting)
*/
@objc
- func eraseStorageAndWait(soureModel soureModel: NSManagedObjectModel, error: NSErrorPointer) -> Bool
+ func eraseStorageAndWait(soureModel soureModel: NSManagedObjectModel?, error: NSErrorPointer) -> Bool
}
diff --git a/Sources/Setup/DataStack.swift b/Sources/Setup/DataStack.swift
index bad563c..99e2b17 100644
--- a/Sources/Setup/DataStack.swift
+++ b/Sources/Setup/DataStack.swift
@@ -263,7 +263,7 @@ public final class DataStack {
URL: fileURL,
options: storeOptions
)
- try _ = self.model[metadata].flatMap(storage.eraseStorageAndWait)
+ _ = try storage.eraseStorageAndWait(soureModel: self.model[metadata])
try self.createPersistentStoreFromStorage(
storage,
@@ -359,7 +359,7 @@ public final class DataStack {
URL: cacheFileURL,
options: storeOptions
)
- try _ = self.model[metadata].flatMap(storage.eraseStorageAndWait)
+ _ = try storage.eraseStorageAndWait(soureModel: self.model[metadata])
try self.createPersistentStoreFromStorage(
storage,
diff --git a/Sources/Setup/StorageInterfaces/ICloudStore.swift b/Sources/Setup/StorageInterfaces/ICloudStore.swift
index 06e3e8f..2aecdd4 100644
--- a/Sources/Setup/StorageInterfaces/ICloudStore.swift
+++ b/Sources/Setup/StorageInterfaces/ICloudStore.swift
@@ -424,11 +424,19 @@ public class ICloudStore: CloudStorage {
/**
Called by the `DataStack` to perform actual deletion of the store file from disk. Do not call directly! The `sourceModel` argument is a hint for the existing store's model version. For `SQLiteStore`, this converts the database's WAL journaling mode to DELETE before deleting the file.
*/
- public func eraseStorageAndWait(soureModel soureModel: NSManagedObjectModel) throws {
+ public func eraseStorageAndWait(soureModel soureModel: NSManagedObjectModel?) throws {
// TODO: check if attached to persistent store
let cacheFileURL = self.cacheFileURL
+ guard let soureModel = soureModel else {
+
+ let fileManager = NSFileManager.defaultManager()
+ try fileManager.removeItemAtURL(cacheFileURL)
+ _ = try fileManager.removeItemAtPath("\(cacheFileURL.absoluteString)-wal")
+ _ = try fileManager.removeItemAtPath("\(cacheFileURL.absoluteString)-shm")
+ return
+ }
try cs_autoreleasepool {
let journalUpdatingCoordinator = NSPersistentStoreCoordinator(managedObjectModel: soureModel)
diff --git a/Sources/Setup/StorageInterfaces/LegacySQLiteStore.swift b/Sources/Setup/StorageInterfaces/LegacySQLiteStore.swift
index b72c0fc..a7414e1 100644
--- a/Sources/Setup/StorageInterfaces/LegacySQLiteStore.swift
+++ b/Sources/Setup/StorageInterfaces/LegacySQLiteStore.swift
@@ -165,11 +165,19 @@ public final class LegacySQLiteStore: LocalStorage, DefaultInitializableStore {
/**
Called by the `DataStack` to perform actual deletion of the store file from disk. Do not call directly! The `sourceModel` argument is a hint for the existing store's model version. For `SQLiteStore`, this converts the database's WAL journaling mode to DELETE before deleting the file.
*/
- public func eraseStorageAndWait(soureModel soureModel: NSManagedObjectModel) throws {
+ public func eraseStorageAndWait(soureModel soureModel: NSManagedObjectModel?) throws {
// TODO: check if attached to persistent store
let fileURL = self.fileURL
+ guard let soureModel = soureModel else {
+
+ let fileManager = NSFileManager.defaultManager()
+ try fileManager.removeItemAtURL(fileURL)
+ _ = try fileManager.removeItemAtPath("\(fileURL.absoluteString)-wal")
+ _ = try fileManager.removeItemAtPath("\(fileURL.absoluteString)-shm")
+ return
+ }
try cs_autoreleasepool {
let journalUpdatingCoordinator = NSPersistentStoreCoordinator(managedObjectModel: soureModel)
diff --git a/Sources/Setup/StorageInterfaces/SQLiteStore.swift b/Sources/Setup/StorageInterfaces/SQLiteStore.swift
index ee50d73..4a1d1a9 100644
--- a/Sources/Setup/StorageInterfaces/SQLiteStore.swift
+++ b/Sources/Setup/StorageInterfaces/SQLiteStore.swift
@@ -162,11 +162,19 @@ public final class SQLiteStore: LocalStorage, DefaultInitializableStore {
/**
Called by the `DataStack` to perform actual deletion of the store file from disk. Do not call directly! The `sourceModel` argument is a hint for the existing store's model version. For `SQLiteStore`, this converts the database's WAL journaling mode to DELETE before deleting the file.
*/
- public func eraseStorageAndWait(soureModel soureModel: NSManagedObjectModel) throws {
+ public func eraseStorageAndWait(soureModel soureModel: NSManagedObjectModel?) throws {
// TODO: check if attached to persistent store
let fileURL = self.fileURL
+ guard let soureModel = soureModel else {
+
+ let fileManager = NSFileManager.defaultManager()
+ try fileManager.removeItemAtURL(fileURL)
+ _ = try fileManager.removeItemAtPath("\(fileURL.absoluteString)-wal")
+ _ = try fileManager.removeItemAtPath("\(fileURL.absoluteString)-shm")
+ return
+ }
try cs_autoreleasepool {
let journalUpdatingCoordinator = NSPersistentStoreCoordinator(managedObjectModel: soureModel)
diff --git a/Sources/Setup/StorageInterfaces/StorageInterface.swift b/Sources/Setup/StorageInterfaces/StorageInterface.swift
index 63f37b2..3e10b3c 100644
--- a/Sources/Setup/StorageInterfaces/StorageInterface.swift
+++ b/Sources/Setup/StorageInterfaces/StorageInterface.swift
@@ -158,7 +158,7 @@ public protocol LocalStorage: StorageInterface {
/**
Called by the `DataStack` to perform actual deletion of the store file from disk. **Do not call directly!** The `sourceModel` argument is a hint for the existing store's model version. Implementers can use the `sourceModel` to perform necessary store operations. (SQLite stores for example, can convert WAL journaling mode to DELETE before deleting)
*/
- func eraseStorageAndWait(soureModel soureModel: NSManagedObjectModel) throws
+ func eraseStorageAndWait(soureModel soureModel: NSManagedObjectModel?) throws
}
internal extension LocalStorage {
@@ -242,7 +242,7 @@ public protocol CloudStorage: StorageInterface {
/**
Called by the `DataStack` to perform actual deletion of the store file from disk. **Do not call directly!** The `sourceModel` argument is a hint for the existing store's model version. Implementers can use the `sourceModel` to perform necessary store operations. (Cloud stores for example, can set the NSPersistentStoreRemoveUbiquitousMetadataOption option before deleting)
*/
- func eraseStorageAndWait(soureModel soureModel: NSManagedObjectModel) throws
+ func eraseStorageAndWait(soureModel soureModel: NSManagedObjectModel?) throws
}
internal extension CloudStorage {
From df835114cbbbcc389774c5714c3d288fa17af721 Mon Sep 17 00:00:00 2001
From: John Rommel Estropia
Date: Sat, 10 Sep 2016 22:57:45 +0900
Subject: [PATCH 04/15] ignore errors when deleting wal files
---
Sources/Setup/StorageInterfaces/ICloudStore.swift | 4 ++--
Sources/Setup/StorageInterfaces/LegacySQLiteStore.swift | 4 ++--
Sources/Setup/StorageInterfaces/SQLiteStore.swift | 4 ++--
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/Sources/Setup/StorageInterfaces/ICloudStore.swift b/Sources/Setup/StorageInterfaces/ICloudStore.swift
index 2aecdd4..c15c82b 100644
--- a/Sources/Setup/StorageInterfaces/ICloudStore.swift
+++ b/Sources/Setup/StorageInterfaces/ICloudStore.swift
@@ -433,8 +433,8 @@ public class ICloudStore: CloudStorage {
let fileManager = NSFileManager.defaultManager()
try fileManager.removeItemAtURL(cacheFileURL)
- _ = try fileManager.removeItemAtPath("\(cacheFileURL.absoluteString)-wal")
- _ = try fileManager.removeItemAtPath("\(cacheFileURL.absoluteString)-shm")
+ _ = try? fileManager.removeItemAtPath("\(cacheFileURL.absoluteString)-wal")
+ _ = try? fileManager.removeItemAtPath("\(cacheFileURL.absoluteString)-shm")
return
}
try cs_autoreleasepool {
diff --git a/Sources/Setup/StorageInterfaces/LegacySQLiteStore.swift b/Sources/Setup/StorageInterfaces/LegacySQLiteStore.swift
index a7414e1..f4bdaf2 100644
--- a/Sources/Setup/StorageInterfaces/LegacySQLiteStore.swift
+++ b/Sources/Setup/StorageInterfaces/LegacySQLiteStore.swift
@@ -174,8 +174,8 @@ public final class LegacySQLiteStore: LocalStorage, DefaultInitializableStore {
let fileManager = NSFileManager.defaultManager()
try fileManager.removeItemAtURL(fileURL)
- _ = try fileManager.removeItemAtPath("\(fileURL.absoluteString)-wal")
- _ = try fileManager.removeItemAtPath("\(fileURL.absoluteString)-shm")
+ _ = try? fileManager.removeItemAtPath("\(fileURL.absoluteString)-wal")
+ _ = try? fileManager.removeItemAtPath("\(fileURL.absoluteString)-shm")
return
}
try cs_autoreleasepool {
diff --git a/Sources/Setup/StorageInterfaces/SQLiteStore.swift b/Sources/Setup/StorageInterfaces/SQLiteStore.swift
index 4a1d1a9..a566a89 100644
--- a/Sources/Setup/StorageInterfaces/SQLiteStore.swift
+++ b/Sources/Setup/StorageInterfaces/SQLiteStore.swift
@@ -171,8 +171,8 @@ public final class SQLiteStore: LocalStorage, DefaultInitializableStore {
let fileManager = NSFileManager.defaultManager()
try fileManager.removeItemAtURL(fileURL)
- _ = try fileManager.removeItemAtPath("\(fileURL.absoluteString)-wal")
- _ = try fileManager.removeItemAtPath("\(fileURL.absoluteString)-shm")
+ _ = try? fileManager.removeItemAtPath("\(fileURL.absoluteString)-wal")
+ _ = try? fileManager.removeItemAtPath("\(fileURL.absoluteString)-shm")
return
}
try cs_autoreleasepool {
From 243c4044abc1d6beae8cfb82394ed2d2b99a8e90 Mon Sep 17 00:00:00 2001
From: John Rommel Estropia
Date: Sun, 11 Sep 2016 14:30:25 +0900
Subject: [PATCH 05/15] fix bridging producing base abstract class instead of
subclass concrete class
---
CoreStoreTests/BridgingTests.m | 37 +++++++++++++++++
.../CSAsynchronousDataTransaction.swift | 10 ++---
.../ObjectiveC/CSBaseDataTransaction.swift | 18 ++++-----
.../CSSynchronousDataTransaction.swift | 10 ++---
.../ObjectiveC/CSUnsafeDataTransaction.swift | 10 ++---
Sources/ObjectiveC/CoreStoreBridge.swift | 40 +++++++++++++++----
6 files changed, 92 insertions(+), 33 deletions(-)
diff --git a/CoreStoreTests/BridgingTests.m b/CoreStoreTests/BridgingTests.m
index 886bc40..04c2efa 100644
--- a/CoreStoreTests/BridgingTests.m
+++ b/CoreStoreTests/BridgingTests.m
@@ -197,4 +197,41 @@
XCTAssertNil(sqliteError);
}
+- (void)test_ThatTransactions_BridgeCorrectly {
+
+ [CSCoreStore
+ setDefaultStack:[[CSDataStack alloc]
+ initWithModelName:@"Model"
+ bundle:[NSBundle bundleForClass:[self class]]
+ versionChain:nil]];
+ [CSCoreStore
+ addInMemoryStorageAndWait:[CSInMemoryStore new]
+ error:nil];
+
+ {
+ CSUnsafeDataTransaction *transaction = [CSCoreStore beginUnsafe];
+ XCTAssertNotNil(transaction);
+ XCTAssert([transaction isKindOfClass:[CSUnsafeDataTransaction class]]);
+ }
+ {
+ XCTestExpectation *expectation = [self expectationWithDescription:@"sync"];
+ [CSCoreStore beginSynchronous:^(CSSynchronousDataTransaction * _Nonnull transaction) {
+
+ XCTAssertNotNil(transaction);
+ XCTAssert([transaction isKindOfClass:[CSSynchronousDataTransaction class]]);
+ [expectation fulfill];
+ }];
+ }
+ {
+ XCTestExpectation *expectation = [self expectationWithDescription:@"async"];
+ [CSCoreStore beginAsynchronous:^(CSAsynchronousDataTransaction * _Nonnull transaction) {
+
+ XCTAssertNotNil(transaction);
+ XCTAssert([transaction isKindOfClass:[CSAsynchronousDataTransaction class]]);
+ [expectation fulfill];
+ }];
+ }
+ [self waitForExpectationsWithTimeout:10 handler:nil];
+}
+
@end
diff --git a/Sources/ObjectiveC/CSAsynchronousDataTransaction.swift b/Sources/ObjectiveC/CSAsynchronousDataTransaction.swift
index f31609d..bcd0e8f 100644
--- a/Sources/ObjectiveC/CSAsynchronousDataTransaction.swift
+++ b/Sources/ObjectiveC/CSAsynchronousDataTransaction.swift
@@ -144,7 +144,7 @@ public final class CSAsynchronousDataTransaction: CSBaseDataTransaction {
// MARK: CoreStoreObjectiveCType
- internal typealias SwiftType = AsynchronousDataTransaction
+ public typealias SwiftType = AsynchronousDataTransaction
public override var bridgeToSwift: AsynchronousDataTransaction {
@@ -153,21 +153,21 @@ public final class CSAsynchronousDataTransaction: CSBaseDataTransaction {
public required init(_ swiftValue: AsynchronousDataTransaction) {
- super.init(swiftValue)
+ super.init(swiftValue as BaseDataTransaction)
}
public required init(_ swiftValue: BaseDataTransaction) {
- fatalError("init(_:) requires an AsynchronousDataTransaction instance")
+ super.init(swiftValue as! AsynchronousDataTransaction)
}
}
// MARK: - AsynchronousDataTransaction
-extension AsynchronousDataTransaction {
+extension AsynchronousDataTransaction: CoreStoreSwiftType {
// MARK: CoreStoreSwiftType
- internal typealias ObjectiveCType = CSAsynchronousDataTransaction
+ public typealias ObjectiveCType = CSAsynchronousDataTransaction
}
diff --git a/Sources/ObjectiveC/CSBaseDataTransaction.swift b/Sources/ObjectiveC/CSBaseDataTransaction.swift
index 2362ab2..d86a583 100644
--- a/Sources/ObjectiveC/CSBaseDataTransaction.swift
+++ b/Sources/ObjectiveC/CSBaseDataTransaction.swift
@@ -292,8 +292,6 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType {
// MARK: CoreStoreObjectiveCType
- public typealias SwiftType = BaseDataTransaction
-
public required init(_ swiftValue: BaseDataTransaction) {
self.swiftTransaction = swiftValue
@@ -312,11 +310,11 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType {
}
-// MARK: - BaseDataTransaction
-
-extension BaseDataTransaction: CoreStoreSwiftType {
-
- // MARK: CoreStoreSwiftType
-
- public typealias ObjectiveCType = CSBaseDataTransaction
-}
+//// MARK: - BaseDataTransaction
+//
+//extension BaseDataTransaction: CoreStoreSwiftType {
+//
+// // MARK: CoreStoreSwiftType
+//
+// public typealias ObjectiveCType = CSBaseDataTransaction
+//}
diff --git a/Sources/ObjectiveC/CSSynchronousDataTransaction.swift b/Sources/ObjectiveC/CSSynchronousDataTransaction.swift
index 166e75f..9403294 100644
--- a/Sources/ObjectiveC/CSSynchronousDataTransaction.swift
+++ b/Sources/ObjectiveC/CSSynchronousDataTransaction.swift
@@ -143,7 +143,7 @@ public final class CSSynchronousDataTransaction: CSBaseDataTransaction {
// MARK: CoreStoreObjectiveCType
- internal typealias SwiftType = SynchronousDataTransaction
+ public typealias SwiftType = SynchronousDataTransaction
public override var bridgeToSwift: SynchronousDataTransaction {
@@ -152,21 +152,21 @@ public final class CSSynchronousDataTransaction: CSBaseDataTransaction {
public required init(_ swiftValue: SynchronousDataTransaction) {
- super.init(swiftValue)
+ super.init(swiftValue as BaseDataTransaction)
}
public required init(_ swiftValue: BaseDataTransaction) {
- fatalError("init(_:) requires a BaseDataTransaction instance")
+ super.init(swiftValue as! SynchronousDataTransaction)
}
}
// MARK: - SynchronousDataTransaction
-extension SynchronousDataTransaction {
+extension SynchronousDataTransaction: CoreStoreSwiftType {
// MARK: CoreStoreSwiftType
- internal typealias ObjectiveCType = CSSynchronousDataTransaction
+ public typealias ObjectiveCType = CSSynchronousDataTransaction
}
diff --git a/Sources/ObjectiveC/CSUnsafeDataTransaction.swift b/Sources/ObjectiveC/CSUnsafeDataTransaction.swift
index 53d7ee8..57769c4 100644
--- a/Sources/ObjectiveC/CSUnsafeDataTransaction.swift
+++ b/Sources/ObjectiveC/CSUnsafeDataTransaction.swift
@@ -174,7 +174,7 @@ public final class CSUnsafeDataTransaction: CSBaseDataTransaction {
// MARK: CoreStoreObjectiveCType
- internal typealias SwiftType = UnsafeDataTransaction
+ public typealias SwiftType = UnsafeDataTransaction
public override var bridgeToSwift: UnsafeDataTransaction {
@@ -183,21 +183,21 @@ public final class CSUnsafeDataTransaction: CSBaseDataTransaction {
public required init(_ swiftValue: UnsafeDataTransaction) {
- super.init(swiftValue)
+ super.init(swiftValue as BaseDataTransaction)
}
public required init(_ swiftValue: BaseDataTransaction) {
- fatalError("init(_:) requires an UnsafeDataTransaction instance")
+ super.init(swiftValue as! UnsafeDataTransaction)
}
}
// MARK: - UnsafeDataTransaction
-extension UnsafeDataTransaction {
+extension UnsafeDataTransaction: CoreStoreSwiftType {
// MARK: CoreStoreSwiftType
- internal typealias ObjectiveCType = CSUnsafeDataTransaction
+ public typealias ObjectiveCType = CSUnsafeDataTransaction
}
diff --git a/Sources/ObjectiveC/CoreStoreBridge.swift b/Sources/ObjectiveC/CoreStoreBridge.swift
index bcc2aa6..fbb270c 100644
--- a/Sources/ObjectiveC/CoreStoreBridge.swift
+++ b/Sources/ObjectiveC/CoreStoreBridge.swift
@@ -118,12 +118,18 @@ internal func bridge(error: NSErrorPointer, @noescape _ c
do {
let result = try closure()
- error.memory = nil
+ if error != nil {
+
+ error.memory = nil
+ }
return result.bridgeToObjectiveC
}
catch let swiftError {
- error.memory = swiftError.bridgeToObjectiveC
+ if error != nil {
+
+ error.memory = swiftError.bridgeToObjectiveC
+ }
return nil
}
}
@@ -133,12 +139,18 @@ internal func bridge(error: NSErrorPointer, @noescape _ closure: () throws -> Vo
do {
try closure()
- error.memory = nil
+ if error != nil {
+
+ error.memory = nil
+ }
return true
}
catch let swiftError {
- error.memory = swiftError.bridgeToObjectiveC
+ if error != nil {
+
+ error.memory = swiftError.bridgeToObjectiveC
+ }
return false
}
}
@@ -148,12 +160,18 @@ internal func bridge(error: NSErrorPointer, @noescape _ closure: () throws ->
do {
let result = try closure()
- error.memory = nil
+ if error != nil {
+
+ error.memory = nil
+ }
return result
}
catch let swiftError {
- error.memory = swiftError.bridgeToObjectiveC
+ if error != nil {
+
+ error.memory = swiftError.bridgeToObjectiveC
+ }
return nil
}
}
@@ -163,12 +181,18 @@ internal func bridge(error: NSErrorPointer, @noescape _ c
do {
let result = try closure()
- error.memory = nil
+ if error != nil {
+
+ error.memory = nil
+ }
return result.map { $0.bridgeToObjectiveC }
}
catch let swiftError {
- error.memory = swiftError.bridgeToObjectiveC
+ if error != nil {
+
+ error.memory = swiftError.bridgeToObjectiveC
+ }
return nil
}
}
From 0dbd05b172319a1beb60e0c6c3f1bbe53b95921f Mon Sep 17 00:00:00 2001
From: John Rommel Estropia
Date: Sun, 11 Sep 2016 14:30:32 +0900
Subject: [PATCH 06/15] version bump
---
CoreStore.podspec | 2 +-
Sources/Info.plist | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/CoreStore.podspec b/CoreStore.podspec
index 4717659..38d7970 100644
--- a/CoreStore.podspec
+++ b/CoreStore.podspec
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "CoreStore"
- s.version = "2.0.5"
+ s.version = "2.0.6"
s.license = "MIT"
s.summary = "Unleashing the real power of Core Data with the elegance and safety of Swift"
s.homepage = "https://github.com/JohnEstropia/CoreStore"
diff --git a/Sources/Info.plist b/Sources/Info.plist
index 38bcc7c..0100960 100644
--- a/Sources/Info.plist
+++ b/Sources/Info.plist
@@ -15,7 +15,7 @@
CFBundlePackageType
FMWK
CFBundleShortVersionString
- 2.0.5
+ 2.0.6
CFBundleSignature
????
CFBundleVersion
From aa6bceaaf3ed2760f62d07d8a3c847f3c50ace41 Mon Sep 17 00:00:00 2001
From: John Rommel Estropia
Date: Sat, 17 Sep 2016 12:22:25 +0900
Subject: [PATCH 07/15] working for Swift 2.3!
---
Cartfile | 2 +-
Cartfile.resolved | 2 +-
Carthage/Checkouts/GCDKit | 2 +-
CoreStore.podspec | 2 +-
CoreStore.xcodeproj/project.pbxproj | 385 +-----------------
.../xcschemes/CoreStore iOS7.xcscheme | 104 -----
.../CoreStoreDemo.xcodeproj/project.pbxproj | 3 +
CoreStoreTests/BaseTests/BaseTestCase.swift | 4 +-
CoreStoreTests/StorageInterfaceTests.swift | 19 +-
.../FetchedResultsControllerDelegate.swift | 16 +-
.../NSManagedObjectContext+Querying.swift | 13 +-
.../Internal/NSManagedObjectModel+Setup.swift | 6 +-
Sources/Migrating/DataStack+Migration.swift | 9 +-
.../StorageInterfaces/LegacySQLiteStore.swift | 7 +-
.../Setup/StorageInterfaces/SQLiteStore.swift | 10 +-
15 files changed, 76 insertions(+), 508 deletions(-)
delete mode 100644 CoreStore.xcodeproj/xcshareddata/xcschemes/CoreStore iOS7.xcscheme
diff --git a/Cartfile b/Cartfile
index b322e93..bcc5dc5 100644
--- a/Cartfile
+++ b/Cartfile
@@ -1 +1 @@
-github "JohnEstropia/GCDKit" == 1.2.6
+github "JohnEstropia/GCDKit" == 1.3.0
diff --git a/Cartfile.resolved b/Cartfile.resolved
index 86ed4b6..15eb782 100644
--- a/Cartfile.resolved
+++ b/Cartfile.resolved
@@ -1 +1 @@
-github "JohnEstropia/GCDKit" "1.2.6"
+github "JohnEstropia/GCDKit" "1.3.0"
diff --git a/Carthage/Checkouts/GCDKit b/Carthage/Checkouts/GCDKit
index bef1b10..7f88719 160000
--- a/Carthage/Checkouts/GCDKit
+++ b/Carthage/Checkouts/GCDKit
@@ -1 +1 @@
-Subproject commit bef1b1075f718bc6ebd9d9a7abf2de5b39afda2d
+Subproject commit 7f88719fbd4824a378576d679b0b929816973f25
diff --git a/CoreStore.podspec b/CoreStore.podspec
index 38d7970..3e79aec 100644
--- a/CoreStore.podspec
+++ b/CoreStore.podspec
@@ -20,5 +20,5 @@ Pod::Spec.new do |s|
'OTHER_SWIFT_FLAGS[config=Release]' => '-D USE_FRAMEWORKS',
'GCC_PREPROCESSOR_DEFINITIONS' => 'USE_FRAMEWORKS=1' }
- s.dependency "GCDKit", "1.2.6"
+ s.dependency "GCDKit", "1.3.0"
end
diff --git a/CoreStore.xcodeproj/project.pbxproj b/CoreStore.xcodeproj/project.pbxproj
index edc705f..8611ea5 100644
--- a/CoreStore.xcodeproj/project.pbxproj
+++ b/CoreStore.xcodeproj/project.pbxproj
@@ -70,15 +70,12 @@
82BA18DF1C4BBE2600A0916E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82BA18DE1C4BBE2600A0916E /* Foundation.framework */; };
82BA18E11C4BBE2C00A0916E /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82BA18E01C4BBE2C00A0916E /* CoreData.framework */; };
B501FDDD1CA8D05000BE22EF /* CSSectionBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDDC1CA8D05000BE22EF /* CSSectionBy.swift */; };
- B501FDDE1CA8D05000BE22EF /* CSSectionBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDDC1CA8D05000BE22EF /* CSSectionBy.swift */; };
B501FDDF1CA8D05000BE22EF /* CSSectionBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDDC1CA8D05000BE22EF /* CSSectionBy.swift */; };
B501FDE01CA8D05000BE22EF /* CSSectionBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDDC1CA8D05000BE22EF /* CSSectionBy.swift */; };
B501FDE21CA8D1F500BE22EF /* CSListMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDE11CA8D1F500BE22EF /* CSListMonitor.swift */; };
- B501FDE31CA8D1F500BE22EF /* CSListMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDE11CA8D1F500BE22EF /* CSListMonitor.swift */; };
B501FDE41CA8D1F500BE22EF /* CSListMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDE11CA8D1F500BE22EF /* CSListMonitor.swift */; };
B501FDE51CA8D1F500BE22EF /* CSListMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDE11CA8D1F500BE22EF /* CSListMonitor.swift */; };
B501FDE71CA8D20500BE22EF /* CSListObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDE61CA8D20500BE22EF /* CSListObserver.swift */; };
- B501FDE81CA8D20500BE22EF /* CSListObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDE61CA8D20500BE22EF /* CSListObserver.swift */; };
B501FDE91CA8D20500BE22EF /* CSListObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDE61CA8D20500BE22EF /* CSListObserver.swift */; };
B501FDEA1CA8D20500BE22EF /* CSListObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDE61CA8D20500BE22EF /* CSListObserver.swift */; };
B50392F91C478FF3009900CA /* NSManagedObject+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B50392F81C478FF3009900CA /* NSManagedObject+Transaction.swift */; };
@@ -91,7 +88,6 @@
B519E45B1C4CD2ED00E7B469 /* GCDKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B519E4571C4CD2CA00E7B469 /* GCDKit.framework */; };
B51BE06A1B47FC4B0069F532 /* NSManagedObjectModel+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51BE0691B47FC4B0069F532 /* NSManagedObjectModel+Setup.swift */; };
B51FE5AB1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51FE5AA1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift */; };
- B51FE5AC1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51FE5AA1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift */; };
B51FE5AD1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51FE5AA1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift */; };
B51FE5AE1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51FE5AA1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift */; };
B51FE5AF1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51FE5AA1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift */; };
@@ -150,12 +146,10 @@
B52557891D02DE8100E51965 /* 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 */; };
- B52661411CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526613F1CADD585007B85D9 /* CoreStoreFetchRequest.swift */; };
B52661421CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526613F1CADD585007B85D9 /* CoreStoreFetchRequest.swift */; };
B52661431CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526613F1CADD585007B85D9 /* CoreStoreFetchRequest.swift */; };
B52661441CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526613F1CADD585007B85D9 /* CoreStoreFetchRequest.swift */; };
B529C2041CA4A2DB007E7EBD /* CSSaveResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B529C2031CA4A2DB007E7EBD /* CSSaveResult.swift */; };
- B529C2051CA4A2DB007E7EBD /* 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 */; };
B529C2081CA4A2DC007E7EBD /* CSSaveResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B529C2031CA4A2DB007E7EBD /* CSSaveResult.swift */; };
@@ -207,38 +201,31 @@
B52DD1C91BE1F94600949AFE /* NSManagedObjectContext+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F331AFF85470064E85B /* NSManagedObjectContext+Transaction.swift */; };
B52DD1CA1BE1F94600949AFE /* NSManagedObjectModel+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51BE0691B47FC4B0069F532 /* NSManagedObjectModel+Setup.swift */; };
B52DD1CB1BE1F94600949AFE /* WeakObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F2D1AFF849C0064E85B /* WeakObject.swift */; };
- B538BA761D15B3E30003A766 /* CoreStoreBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = B538BA701D15B3E30003A766 /* CoreStoreBridge.m */; };
B538BA771D15B3E30003A766 /* CoreStoreBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = B538BA701D15B3E30003A766 /* CoreStoreBridge.m */; };
B538BA781D15B3E30003A766 /* CoreStoreBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = B538BA701D15B3E30003A766 /* CoreStoreBridge.m */; };
B538BA791D15B3E30003A766 /* CoreStoreBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = B538BA701D15B3E30003A766 /* CoreStoreBridge.m */; };
B538BA7A1D15B3E30003A766 /* CoreStoreBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = B538BA701D15B3E30003A766 /* CoreStoreBridge.m */; };
B53FB9FE1CAB2D2F00F0D40A /* CSMigrationResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FB9FD1CAB2D2F00F0D40A /* CSMigrationResult.swift */; };
- B53FB9FF1CAB2D2F00F0D40A /* CSMigrationResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FB9FD1CAB2D2F00F0D40A /* CSMigrationResult.swift */; };
B53FBA001CAB2D2F00F0D40A /* CSMigrationResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FB9FD1CAB2D2F00F0D40A /* CSMigrationResult.swift */; };
B53FBA011CAB2D2F00F0D40A /* CSMigrationResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FB9FD1CAB2D2F00F0D40A /* CSMigrationResult.swift */; };
B53FBA021CAB2D2F00F0D40A /* CSMigrationResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FB9FD1CAB2D2F00F0D40A /* CSMigrationResult.swift */; };
B53FBA041CAB300C00F0D40A /* CSMigrationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA031CAB300C00F0D40A /* CSMigrationType.swift */; };
- B53FBA051CAB300C00F0D40A /* CSMigrationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA031CAB300C00F0D40A /* CSMigrationType.swift */; };
B53FBA061CAB300C00F0D40A /* CSMigrationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA031CAB300C00F0D40A /* CSMigrationType.swift */; };
B53FBA071CAB300C00F0D40A /* CSMigrationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA031CAB300C00F0D40A /* CSMigrationType.swift */; };
B53FBA081CAB300C00F0D40A /* CSMigrationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA031CAB300C00F0D40A /* CSMigrationType.swift */; };
B53FBA0B1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA0A1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift */; };
- B53FBA0C1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA0A1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift */; };
B53FBA0D1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA0A1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift */; };
B53FBA0E1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA0A1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift */; };
B53FBA0F1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA0A1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift */; };
B53FBA121CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA111CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift */; };
- B53FBA131CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA111CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift */; };
B53FBA141CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA111CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift */; };
B53FBA151CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA111CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift */; };
B53FBA161CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA111CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift */; };
B53FBA181CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA171CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift */; };
- B53FBA191CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA171CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift */; };
B53FBA1A1CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA171CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift */; };
B53FBA1B1CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA171CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift */; };
B53FBA1C1CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA171CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift */; };
B53FBA1E1CAB63FA00F0D40A /* NSFetchedResultsController+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA1D1CAB63FA00F0D40A /* NSFetchedResultsController+ObjectiveC.swift */; };
- B53FBA1F1CAB63FA00F0D40A /* NSFetchedResultsController+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA1D1CAB63FA00F0D40A /* NSFetchedResultsController+ObjectiveC.swift */; };
B53FBA201CAB63FA00F0D40A /* NSFetchedResultsController+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA1D1CAB63FA00F0D40A /* NSFetchedResultsController+ObjectiveC.swift */; };
B53FBA211CAB63FA00F0D40A /* NSFetchedResultsController+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA1D1CAB63FA00F0D40A /* NSFetchedResultsController+ObjectiveC.swift */; };
B546F9581C99B17400D5AC55 /* CSCoreStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F9571C99B17400D5AC55 /* CSCoreStore+Setup.swift */; };
@@ -288,19 +275,16 @@
B5519A601CA21954002BEF78 /* CSAsynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5519A5E1CA21954002BEF78 /* CSAsynchronousDataTransaction.swift */; };
B5519A611CA21954002BEF78 /* CSAsynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5519A5E1CA21954002BEF78 /* CSAsynchronousDataTransaction.swift */; };
B5519A621CA21954002BEF78 /* CSAsynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5519A5E1CA21954002BEF78 /* CSAsynchronousDataTransaction.swift */; };
- B55717431D15B09D009BDBCA /* CoreStoreBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = B55717421D15AF9C009BDBCA /* CoreStoreBridge.h */; settings = {ATTRIBUTES = (Public, ); }; };
B55717441D15B09E009BDBCA /* CoreStoreBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = B55717421D15AF9C009BDBCA /* CoreStoreBridge.h */; settings = {ATTRIBUTES = (Public, ); }; };
B55717451D15B09F009BDBCA /* CoreStoreBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = B55717421D15AF9C009BDBCA /* CoreStoreBridge.h */; settings = {ATTRIBUTES = (Public, ); }; };
B55717461D15B0A1009BDBCA /* CoreStoreBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = B55717421D15AF9C009BDBCA /* CoreStoreBridge.h */; settings = {ATTRIBUTES = (Public, ); }; };
B55717471D15B0A1009BDBCA /* CoreStoreBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = B55717421D15AF9C009BDBCA /* CoreStoreBridge.h */; settings = {ATTRIBUTES = (Public, ); }; };
B5598BCC1BE2093D0092EFCE /* Model.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = B5D372821A39CD6900F583D9 /* Model.xcdatamodeld */; };
B559CD431CAA8B6300E4D58B /* CSSetupResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B559CD421CAA8B6300E4D58B /* CSSetupResult.swift */; };
- B559CD441CAA8B6300E4D58B /* CSSetupResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B559CD421CAA8B6300E4D58B /* CSSetupResult.swift */; };
B559CD451CAA8B6300E4D58B /* CSSetupResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B559CD421CAA8B6300E4D58B /* CSSetupResult.swift */; };
B559CD461CAA8B6300E4D58B /* CSSetupResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B559CD421CAA8B6300E4D58B /* CSSetupResult.swift */; };
B559CD471CAA8B6300E4D58B /* CSSetupResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B559CD421CAA8B6300E4D58B /* CSSetupResult.swift */; };
B559CD491CAA8C6D00E4D58B /* CSStorageInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = B559CD481CAA8C6D00E4D58B /* CSStorageInterface.swift */; };
- B559CD4A1CAA8C6D00E4D58B /* CSStorageInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = B559CD481CAA8C6D00E4D58B /* CSStorageInterface.swift */; };
B559CD4B1CAA8C6D00E4D58B /* CSStorageInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = B559CD481CAA8C6D00E4D58B /* CSStorageInterface.swift */; };
B559CD4C1CAA8C6D00E4D58B /* CSStorageInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = B559CD481CAA8C6D00E4D58B /* CSStorageInterface.swift */; };
B559CD4D1CAA8C6D00E4D58B /* CSStorageInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = B559CD481CAA8C6D00E4D58B /* CSStorageInterface.swift */; };
@@ -363,7 +347,6 @@
B56321B51BD6521C006C9394 /* NSManagedObjectModel+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51BE0691B47FC4B0069F532 /* NSManagedObjectModel+Setup.swift */; };
B56321B61BD6521C006C9394 /* WeakObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F2D1AFF849C0064E85B /* WeakObject.swift */; };
B5677D3D1CD3B1E400322BFC /* ICloudStoreObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5677D3C1CD3B1E400322BFC /* ICloudStoreObserver.swift */; };
- B5677D3E1CD3B1E400322BFC /* ICloudStoreObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5677D3C1CD3B1E400322BFC /* ICloudStoreObserver.swift */; };
B5677D3F1CD3B1E400322BFC /* ICloudStoreObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5677D3C1CD3B1E400322BFC /* ICloudStoreObserver.swift */; };
B5677D401CD3B1E400322BFC /* ICloudStoreObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5677D3C1CD3B1E400322BFC /* ICloudStoreObserver.swift */; };
B5677D411CD3B1E400322BFC /* ICloudStoreObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5677D3C1CD3B1E400322BFC /* ICloudStoreObserver.swift */; };
@@ -382,16 +365,13 @@
B59851491C90289D00C99590 /* NSPersistentStoreCoordinator+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59AFF401C6593E400C0ABE2 /* NSPersistentStoreCoordinator+Setup.swift */; };
B598514A1C90289E00C99590 /* NSPersistentStoreCoordinator+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59AFF401C6593E400C0ABE2 /* NSPersistentStoreCoordinator+Setup.swift */; };
B598514B1C90289F00C99590 /* NSPersistentStoreCoordinator+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59AFF401C6593E400C0ABE2 /* NSPersistentStoreCoordinator+Setup.swift */; };
- B59983491CA54BC100E1A417 /* CSBaseDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5519A581CA2008C002BEF78 /* CSBaseDataTransaction.swift */; };
B59AFF411C6593E400C0ABE2 /* NSPersistentStoreCoordinator+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59AFF401C6593E400C0ABE2 /* NSPersistentStoreCoordinator+Setup.swift */; };
B59FA0AE1CCBAC95007C9BCA /* ICloudStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59FA0AD1CCBAC95007C9BCA /* ICloudStore.swift */; };
- B59FA0AF1CCBACA6007C9BCA /* ICloudStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59FA0AD1CCBAC95007C9BCA /* ICloudStore.swift */; };
B59FA0B01CCBACA7007C9BCA /* ICloudStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59FA0AD1CCBAC95007C9BCA /* ICloudStore.swift */; };
B59FA0B11CCBACA7007C9BCA /* ICloudStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59FA0AD1CCBAC95007C9BCA /* ICloudStore.swift */; };
B59FA0B21CCBACA8007C9BCA /* ICloudStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59FA0AD1CCBAC95007C9BCA /* ICloudStore.swift */; };
B5A261211B64BFDB006EB6D3 /* MigrationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A261201B64BFDB006EB6D3 /* MigrationType.swift */; };
B5A5F2661CAEC50F004AB9AF /* CSSelect.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A5F2651CAEC50F004AB9AF /* CSSelect.swift */; };
- B5A5F2671CAEC50F004AB9AF /* CSSelect.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A5F2651CAEC50F004AB9AF /* CSSelect.swift */; };
B5A5F2681CAEC50F004AB9AF /* CSSelect.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A5F2651CAEC50F004AB9AF /* CSSelect.swift */; };
B5A5F2691CAEC50F004AB9AF /* CSSelect.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A5F2651CAEC50F004AB9AF /* CSSelect.swift */; };
B5A5F26A1CAEC50F004AB9AF /* CSSelect.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A5F2651CAEC50F004AB9AF /* CSSelect.swift */; };
@@ -412,82 +392,10 @@
B5D3F6461C887C0A00C7492A /* LegacySQLiteStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D3F6441C887C0A00C7492A /* LegacySQLiteStore.swift */; };
B5D3F6471C887C0A00C7492A /* LegacySQLiteStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D3F6441C887C0A00C7492A /* LegacySQLiteStore.swift */; };
B5D3F6481C887C0A00C7492A /* LegacySQLiteStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D3F6441C887C0A00C7492A /* LegacySQLiteStore.swift */; };
- B5D7A5AF1CA3B738005C752B /* (null) in Sources */ = {isa = PBXBuildFile; };
- B5D7A5B01CA3B738005C752B /* StorageInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FE4DA11C8481E100FA6A91 /* StorageInterface.swift */; };
- B5D7A5B11CA3B738005C752B /* InMemoryStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FE4DA61C84FB4400FA6A91 /* InMemoryStore.swift */; };
- B5D7A5B21CA3B738005C752B /* SQLiteStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FE4DAB1C85D44E00FA6A91 /* SQLiteStore.swift */; };
- B5D7A5B31CA3B738005C752B /* LegacySQLiteStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D3F6441C887C0A00C7492A /* LegacySQLiteStore.swift */; };
- B5D7A5B41CA3BAE7005C752B /* NSPersistentStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FEC18D1C9166E200532541 /* NSPersistentStore+Setup.swift */; };
B5D7A5B61CA3BF8F005C752B /* CSInto.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D7A5B51CA3BF8F005C752B /* CSInto.swift */; };
- B5D7A5B71CA3BF8F005C752B /* CSInto.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D7A5B51CA3BF8F005C752B /* CSInto.swift */; };
B5D7A5B81CA3BF8F005C752B /* CSInto.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D7A5B51CA3BF8F005C752B /* CSInto.swift */; };
B5D7A5B91CA3BF8F005C752B /* CSInto.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D7A5B51CA3BF8F005C752B /* CSInto.swift */; };
B5D7A5BA1CA3BF8F005C752B /* CSInto.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D7A5B51CA3BF8F005C752B /* CSInto.swift */; };
- B5D9E2EF1CA2C317007A9D52 /* ObjectMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1C1AFF84860064E85B /* ObjectMonitor.swift */; };
- B5D9E2F01CA2C317007A9D52 /* CoreStoreFetchedResultsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C976E61C6E3A5900B1AF90 /* CoreStoreFetchedResultsController.swift */; };
- B5D9E2F11CA2C317007A9D52 /* ImportableUniqueObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F1DA8F1B9AA991007C5CBB /* ImportableUniqueObject.swift */; };
- B5D9E2F21CA2C317007A9D52 /* CoreStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B504D0D51B02362500B2BBB1 /* CoreStore+Setup.swift */; };
- B5D9E2F31CA2C317007A9D52 /* CoreStoreError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D1E22B19FA9FBC003B2874 /* CoreStoreError.swift */; };
- B5D9E2F41CA2C317007A9D52 /* Where.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F051AFF847B0064E85B /* Where.swift */; };
- B5D9E2F51CA2C317007A9D52 /* FetchedResultsControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B54A6A541BA15F2A007870FD /* FetchedResultsControllerDelegate.swift */; };
- B5D9E2F61CA2C317007A9D52 /* MigrationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A261201B64BFDB006EB6D3 /* MigrationType.swift */; };
- B5D9E2F71CA2C317007A9D52 /* DataStack+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F061AFF847B0064E85B /* DataStack+Querying.swift */; };
- B5D9E2F81CA2C317007A9D52 /* SectionBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56007131B3F6C2800A9A8F9 /* SectionBy.swift */; };
- B5D9E2F91CA2C317007A9D52 /* NSManagedObjectContext+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F331AFF85470064E85B /* NSManagedObjectContext+Transaction.swift */; };
- B5D9E2FA1CA2C317007A9D52 /* UnsafeDataTransaction+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C976E21C6C9F6A00B1AF90 /* UnsafeDataTransaction+Observing.swift */; };
- B5D9E2FB1CA2C317007A9D52 /* MigrationChain.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56007151B4018AB00A9A8F9 /* MigrationChain.swift */; };
- B5D9E2FC1CA2C317007A9D52 /* Tweak.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F001AFF847B0064E85B /* Tweak.swift */; };
- B5D9E2FD1CA2C317007A9D52 /* OrderBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F041AFF847B0064E85B /* OrderBy.swift */; };
- B5D9E2FE1CA2C317007A9D52 /* NSManagedObjectContext+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F321AFF85470064E85B /* NSManagedObjectContext+Setup.swift */; };
- B5D9E2FF1CA2C317007A9D52 /* CoreStore+Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FAD6AD1B518DCB00714891 /* CoreStore+Migration.swift */; };
- B5D9E3001CA2C317007A9D52 /* CoreStore+Logging.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EE41AFF84610064E85B /* CoreStore+Logging.swift */; };
- B5D9E3011CA2C317007A9D52 /* Into.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56007101B3F6BD500A9A8F9 /* Into.swift */; };
- B5D9E3021CA2C317007A9D52 /* Select.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F031AFF847B0064E85B /* Select.swift */; };
- B5D9E3031CA2C317007A9D52 /* NSManagedObject+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B50392F81C478FF3009900CA /* NSManagedObject+Transaction.swift */; };
- B5D9E3041CA2C317007A9D52 /* NSFetchedResultsController+Convenience.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5202CF91C04688100DED140 /* NSFetchedResultsController+Convenience.swift */; };
- B5D9E3051CA2C317007A9D52 /* (null) in Sources */ = {isa = PBXBuildFile; };
- B5D9E3061CA2C317007A9D52 /* ObjectObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1F1AFF84860064E85B /* ObjectObserver.swift */; };
- B5D9E3071CA2C317007A9D52 /* NotificationObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F2B1AFF849C0064E85B /* NotificationObserver.swift */; };
- B5D9E3081CA2C317007A9D52 /* ImportableObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F1DA8C1B9AA97D007C5CBB /* ImportableObject.swift */; };
- B5D9E3091CA2C317007A9D52 /* MigrationResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56965231B356B820075EE4A /* MigrationResult.swift */; };
- B5D9E30A1CA2C317007A9D52 /* CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F291E2619C6D3CF007AF63F /* CoreStore.swift */; };
- B5D9E30B1CA2C317007A9D52 /* ClauseTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F401AFF8CCD0064E85B /* ClauseTypes.swift */; };
- B5D9E30C1CA2C317007A9D52 /* BaseDataTransaction+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EFE1AFF847B0064E85B /* BaseDataTransaction+Querying.swift */; };
- B5D9E30D1CA2C317007A9D52 /* MigrationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FAD6AB1B51285300714891 /* MigrationManager.swift */; };
- B5D9E30E1CA2C317007A9D52 /* DataStack+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EEC1AFF846E0064E85B /* DataStack+Transaction.swift */; };
- B5D9E30F1CA2C317007A9D52 /* DataStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EDB1AFF84500064E85B /* DataStack.swift */; };
- B5D9E3101CA2C317007A9D52 /* Functions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E834BA1B7691F3001D3D50 /* Functions.swift */; };
- B5D9E3111CA2C317007A9D52 /* ListMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1D1AFF84860064E85B /* ListMonitor.swift */; };
- B5D9E3121CA2C317007A9D52 /* UnsafeDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EED1AFF846E0064E85B /* UnsafeDataTransaction.swift */; };
- B5D9E3131CA2C317007A9D52 /* DataStack+Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56964D31B22FFAD0075EE4A /* DataStack+Migration.swift */; };
- B5D9E3141CA2C317007A9D52 /* BaseDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EEB1AFF846E0064E85B /* BaseDataTransaction.swift */; };
- B5D9E3151CA2C317007A9D52 /* SaveResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EF21AFF846E0064E85B /* SaveResult.swift */; };
- B5D9E3161CA2C317007A9D52 /* From.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F011AFF847B0064E85B /* From.swift */; };
- B5D9E3181CA2C317007A9D52 /* NSProgress+Convenience.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FAD6A81B50A4B300714891 /* NSProgress+Convenience.swift */; };
- B5D9E3191CA2C317007A9D52 /* SynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EF31AFF846E0064E85B /* SynchronousDataTransaction.swift */; };
- B5D9E31A1CA2C317007A9D52 /* NSManagedObject+Convenience.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F271AFF84920064E85B /* NSManagedObject+Convenience.swift */; };
- B5D9E31B1CA2C317007A9D52 /* NSManagedObjectModel+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51BE0691B47FC4B0069F532 /* NSManagedObjectModel+Setup.swift */; };
- B5D9E31C1CA2C317007A9D52 /* NSManagedObjectContext+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F351AFF85470064E85B /* NSManagedObjectContext+Querying.swift */; };
- B5D9E31D1CA2C317007A9D52 /* CoreStoreLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EE51AFF84610064E85B /* CoreStoreLogger.swift */; };
- B5D9E31E1CA2C317007A9D52 /* WeakObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F2D1AFF849C0064E85B /* WeakObject.swift */; };
- B5D9E31F1CA2C317007A9D52 /* GroupBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F021AFF847B0064E85B /* GroupBy.swift */; };
- B5D9E3201CA2C317007A9D52 /* DataStack+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1A1AFF84860064E85B /* DataStack+Observing.swift */; };
- B5D9E3211CA2C317007A9D52 /* CoreStore+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EEE1AFF846E0064E85B /* CoreStore+Transaction.swift */; };
- B5D9E3221CA2C317007A9D52 /* NSManagedObjectContext+CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F2C1AFF849C0064E85B /* NSManagedObjectContext+CoreStore.swift */; };
- B5D9E3231CA2C317007A9D52 /* CoreStore+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1B1AFF84860064E85B /* CoreStore+Observing.swift */; };
- B5D9E3241CA2C317007A9D52 /* BaseDataTransaction+Importing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E834B81B76311F001D3D50 /* BaseDataTransaction+Importing.swift */; };
- B5D9E3251CA2C317007A9D52 /* DefaultLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EE31AFF84610064E85B /* DefaultLogger.swift */; };
- B5D9E3261CA2C317007A9D52 /* AsynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EEA1AFF846E0064E85B /* AsynchronousDataTransaction.swift */; };
- B5D9E3271CA2C317007A9D52 /* CoreStore+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F071AFF847B0064E85B /* CoreStore+Querying.swift */; };
- B5D9E3281CA2C317007A9D52 /* ListObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1E1AFF84860064E85B /* ListObserver.swift */; };
- B5D9E32C1CA2C317007A9D52 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B5D39A0119FD00C9000E91BB /* Foundation.framework */; };
- B5D9E32D1CA2C317007A9D52 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2F03A54C19C5C872005002A5 /* CoreData.framework */; };
- B5D9E32F1CA2C317007A9D52 /* CoreStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F03A53519C5C6DA005002A5 /* CoreStore.h */; settings = {ATTRIBUTES = (Public, ); }; };
- B5D9E3431CA2C6C4007A9D52 /* GCDBlock.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D9E3371CA2C6BF007A9D52 /* GCDBlock.swift */; };
- B5D9E3441CA2C6C4007A9D52 /* GCDGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D9E3381CA2C6BF007A9D52 /* GCDGroup.swift */; };
- B5D9E3461CA2C6C4007A9D52 /* GCDQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D9E33A1CA2C6BF007A9D52 /* GCDQueue.swift */; };
- B5D9E3471CA2C6C4007A9D52 /* GCDSemaphore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D9E33B1CA2C6BF007A9D52 /* GCDSemaphore.swift */; };
- B5D9E3481CA2C6C4007A9D52 /* GCDTimer.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D9E33C1CA2C6BF007A9D52 /* GCDTimer.swift */; };
B5DBE2CD1C9914A900B5CEFA /* CSCoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DBE2CC1C9914A900B5CEFA /* CSCoreStore.swift */; };
B5DBE2CE1C9914A900B5CEFA /* CSCoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DBE2CC1C9914A900B5CEFA /* CSCoreStore.swift */; };
B5DBE2CF1C9914A900B5CEFA /* CSCoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DBE2CC1C9914A900B5CEFA /* CSCoreStore.swift */; };
@@ -506,33 +414,26 @@
B5DC47CB1C93D9C800FA3BF3 /* StorageInterfaceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DC47C91C93D9C800FA3BF3 /* StorageInterfaceTests.swift */; };
B5DC47CC1C93D9C800FA3BF3 /* StorageInterfaceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DC47C91C93D9C800FA3BF3 /* StorageInterfaceTests.swift */; };
B5E1B5931CAA0C15007FD580 /* CSObjectMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5921CAA0C15007FD580 /* CSObjectMonitor.swift */; };
- B5E1B5941CAA0C15007FD580 /* CSObjectMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5921CAA0C15007FD580 /* CSObjectMonitor.swift */; };
B5E1B5951CAA0C15007FD580 /* CSObjectMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5921CAA0C15007FD580 /* CSObjectMonitor.swift */; };
B5E1B5961CAA0C15007FD580 /* CSObjectMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5921CAA0C15007FD580 /* CSObjectMonitor.swift */; };
B5E1B5981CAA0C23007FD580 /* CSObjectObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5971CAA0C23007FD580 /* CSObjectObserver.swift */; };
- B5E1B5991CAA0C23007FD580 /* CSObjectObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5971CAA0C23007FD580 /* CSObjectObserver.swift */; };
B5E1B59A1CAA0C23007FD580 /* CSObjectObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5971CAA0C23007FD580 /* CSObjectObserver.swift */; };
B5E1B59B1CAA0C23007FD580 /* CSObjectObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5971CAA0C23007FD580 /* CSObjectObserver.swift */; };
B5E1B59D1CAA2568007FD580 /* CSDataStack+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B59C1CAA2568007FD580 /* CSDataStack+Observing.swift */; };
- B5E1B59E1CAA2568007FD580 /* CSDataStack+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B59C1CAA2568007FD580 /* CSDataStack+Observing.swift */; };
B5E1B59F1CAA2568007FD580 /* CSDataStack+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B59C1CAA2568007FD580 /* CSDataStack+Observing.swift */; };
B5E1B5A01CAA2568007FD580 /* CSDataStack+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B59C1CAA2568007FD580 /* CSDataStack+Observing.swift */; };
B5E1B5A21CAA4365007FD580 /* CSCoreStore+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5A11CAA4365007FD580 /* CSCoreStore+Observing.swift */; };
- B5E1B5A31CAA4365007FD580 /* CSCoreStore+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5A11CAA4365007FD580 /* CSCoreStore+Observing.swift */; };
B5E1B5A41CAA4365007FD580 /* CSCoreStore+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5A11CAA4365007FD580 /* CSCoreStore+Observing.swift */; };
B5E1B5A51CAA4365007FD580 /* CSCoreStore+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5A11CAA4365007FD580 /* CSCoreStore+Observing.swift */; };
B5E1B5A81CAA49E2007FD580 /* CSDataStack+Migrating.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5A71CAA49E2007FD580 /* CSDataStack+Migrating.swift */; };
- B5E1B5A91CAA49E2007FD580 /* CSDataStack+Migrating.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5A71CAA49E2007FD580 /* CSDataStack+Migrating.swift */; };
B5E1B5AA1CAA49E2007FD580 /* CSDataStack+Migrating.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5A71CAA49E2007FD580 /* CSDataStack+Migrating.swift */; };
B5E1B5AB1CAA49E2007FD580 /* CSDataStack+Migrating.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5A71CAA49E2007FD580 /* CSDataStack+Migrating.swift */; };
B5E1B5AC1CAA49E2007FD580 /* CSDataStack+Migrating.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5A71CAA49E2007FD580 /* CSDataStack+Migrating.swift */; };
B5E222231CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E222221CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift */; };
- B5E222241CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E222221CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift */; };
B5E222251CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E222221CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift */; };
B5E222261CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E222221CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift */; };
B5E222271CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E222221CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift */; };
B5E2222A1CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E222291CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift */; };
- B5E2222B1CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E222291CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift */; };
B5E2222C1CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E222291CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift */; };
B5E2222D1CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E222291CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift */; };
B5E2222E1CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E222291CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift */; };
@@ -572,76 +473,54 @@
B5E84F371AFF85470064E85B /* NSManagedObjectContext+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F331AFF85470064E85B /* NSManagedObjectContext+Transaction.swift */; };
B5E84F391AFF85470064E85B /* NSManagedObjectContext+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F351AFF85470064E85B /* NSManagedObjectContext+Querying.swift */; };
B5E84F411AFF8CCD0064E85B /* ClauseTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F401AFF8CCD0064E85B /* ClauseTypes.swift */; };
- B5EA11DD1CA3AFD9002282F8 /* NSPersistentStoreCoordinator+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59AFF401C6593E400C0ABE2 /* NSPersistentStoreCoordinator+Setup.swift */; };
B5ECDBDF1CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBDE1CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift */; };
- B5ECDBE01CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBDE1CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift */; };
B5ECDBE11CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBDE1CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift */; };
B5ECDBE21CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBDE1CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift */; };
B5ECDBE31CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBDE1CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift */; };
B5ECDBE51CA6BEA300C7F112 /* CSClauseTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBE41CA6BEA300C7F112 /* CSClauseTypes.swift */; };
- B5ECDBE61CA6BEA300C7F112 /* CSClauseTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBE41CA6BEA300C7F112 /* CSClauseTypes.swift */; };
B5ECDBE71CA6BEA300C7F112 /* CSClauseTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBE41CA6BEA300C7F112 /* CSClauseTypes.swift */; };
B5ECDBE81CA6BEA300C7F112 /* CSClauseTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBE41CA6BEA300C7F112 /* CSClauseTypes.swift */; };
B5ECDBE91CA6BEA300C7F112 /* CSClauseTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBE41CA6BEA300C7F112 /* CSClauseTypes.swift */; };
B5ECDBEC1CA6BF2000C7F112 /* CSFrom.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBEB1CA6BF2000C7F112 /* CSFrom.swift */; };
- B5ECDBED1CA6BF2000C7F112 /* CSFrom.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBEB1CA6BF2000C7F112 /* CSFrom.swift */; };
B5ECDBEE1CA6BF2000C7F112 /* CSFrom.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBEB1CA6BF2000C7F112 /* CSFrom.swift */; };
B5ECDBEF1CA6BF2000C7F112 /* CSFrom.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBEB1CA6BF2000C7F112 /* CSFrom.swift */; };
B5ECDBF01CA6BF2000C7F112 /* CSFrom.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBEB1CA6BF2000C7F112 /* CSFrom.swift */; };
B5ECDBF91CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBF81CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift */; };
- B5ECDBFA1CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBF81CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift */; };
B5ECDBFB1CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBF81CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift */; };
B5ECDBFC1CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBF81CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift */; };
B5ECDBFD1CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBF81CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift */; };
B5ECDBFF1CA80CBA00C7F112 /* CSWhere.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBFE1CA80CBA00C7F112 /* CSWhere.swift */; };
- B5ECDC001CA80CBA00C7F112 /* CSWhere.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBFE1CA80CBA00C7F112 /* CSWhere.swift */; };
B5ECDC011CA80CBA00C7F112 /* CSWhere.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBFE1CA80CBA00C7F112 /* CSWhere.swift */; };
B5ECDC021CA80CBA00C7F112 /* CSWhere.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBFE1CA80CBA00C7F112 /* CSWhere.swift */; };
B5ECDC031CA80CBA00C7F112 /* CSWhere.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBFE1CA80CBA00C7F112 /* CSWhere.swift */; };
B5ECDC051CA8138100C7F112 /* CSOrderBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC041CA8138100C7F112 /* CSOrderBy.swift */; };
- B5ECDC061CA8138100C7F112 /* CSOrderBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC041CA8138100C7F112 /* CSOrderBy.swift */; };
B5ECDC071CA8138100C7F112 /* CSOrderBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC041CA8138100C7F112 /* CSOrderBy.swift */; };
B5ECDC081CA8138100C7F112 /* CSOrderBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC041CA8138100C7F112 /* CSOrderBy.swift */; };
B5ECDC091CA8138100C7F112 /* CSOrderBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC041CA8138100C7F112 /* CSOrderBy.swift */; };
B5ECDC0B1CA8161B00C7F112 /* CSGroupBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC0A1CA8161B00C7F112 /* CSGroupBy.swift */; };
- B5ECDC0C1CA8161B00C7F112 /* CSGroupBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC0A1CA8161B00C7F112 /* CSGroupBy.swift */; };
B5ECDC0D1CA8161B00C7F112 /* CSGroupBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC0A1CA8161B00C7F112 /* CSGroupBy.swift */; };
B5ECDC0E1CA8161B00C7F112 /* CSGroupBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC0A1CA8161B00C7F112 /* CSGroupBy.swift */; };
B5ECDC0F1CA8161B00C7F112 /* CSGroupBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC0A1CA8161B00C7F112 /* CSGroupBy.swift */; };
B5ECDC111CA816E500C7F112 /* CSTweak.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC101CA816E500C7F112 /* CSTweak.swift */; };
- B5ECDC121CA816E500C7F112 /* CSTweak.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC101CA816E500C7F112 /* CSTweak.swift */; };
B5ECDC131CA816E500C7F112 /* CSTweak.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC101CA816E500C7F112 /* CSTweak.swift */; };
B5ECDC141CA816E500C7F112 /* CSTweak.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC101CA816E500C7F112 /* CSTweak.swift */; };
B5ECDC151CA816E500C7F112 /* CSTweak.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC101CA816E500C7F112 /* CSTweak.swift */; };
B5ECDC1D1CA81A2100C7F112 /* CSDataStack+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC1C1CA81A2100C7F112 /* CSDataStack+Querying.swift */; };
- B5ECDC1E1CA81A2100C7F112 /* CSDataStack+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC1C1CA81A2100C7F112 /* CSDataStack+Querying.swift */; };
B5ECDC1F1CA81A2100C7F112 /* CSDataStack+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC1C1CA81A2100C7F112 /* CSDataStack+Querying.swift */; };
B5ECDC201CA81A2100C7F112 /* CSDataStack+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC1C1CA81A2100C7F112 /* CSDataStack+Querying.swift */; };
B5ECDC211CA81A2100C7F112 /* CSDataStack+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC1C1CA81A2100C7F112 /* CSDataStack+Querying.swift */; };
B5ECDC231CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC221CA81A3900C7F112 /* CSCoreStore+Querying.swift */; };
- B5ECDC241CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC221CA81A3900C7F112 /* CSCoreStore+Querying.swift */; };
B5ECDC251CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC221CA81A3900C7F112 /* CSCoreStore+Querying.swift */; };
B5ECDC261CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC221CA81A3900C7F112 /* CSCoreStore+Querying.swift */; };
B5ECDC271CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC221CA81A3900C7F112 /* CSCoreStore+Querying.swift */; };
B5ECDC291CA81CC700C7F112 /* CSDataStack+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC281CA81CC700C7F112 /* CSDataStack+Transaction.swift */; };
- B5ECDC2A1CA81CC700C7F112 /* CSDataStack+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC281CA81CC700C7F112 /* CSDataStack+Transaction.swift */; };
B5ECDC2B1CA81CC700C7F112 /* CSDataStack+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC281CA81CC700C7F112 /* CSDataStack+Transaction.swift */; };
B5ECDC2C1CA81CC700C7F112 /* CSDataStack+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC281CA81CC700C7F112 /* CSDataStack+Transaction.swift */; };
B5ECDC2D1CA81CC700C7F112 /* CSDataStack+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC281CA81CC700C7F112 /* CSDataStack+Transaction.swift */; };
B5ECDC2F1CA81CDC00C7F112 /* CSCoreStore+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC2E1CA81CDC00C7F112 /* CSCoreStore+Transaction.swift */; };
- B5ECDC301CA81CDC00C7F112 /* CSCoreStore+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC2E1CA81CDC00C7F112 /* CSCoreStore+Transaction.swift */; };
B5ECDC311CA81CDC00C7F112 /* CSCoreStore+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC2E1CA81CDC00C7F112 /* CSCoreStore+Transaction.swift */; };
B5ECDC321CA81CDC00C7F112 /* CSCoreStore+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC2E1CA81CDC00C7F112 /* CSCoreStore+Transaction.swift */; };
B5ECDC331CA81CDC00C7F112 /* CSCoreStore+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC2E1CA81CDC00C7F112 /* CSCoreStore+Transaction.swift */; };
- B5ECDC3A1CA8369400C7F112 /* CSDataStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DBE2D11C991B3E00B5CEFA /* CSDataStack.swift */; };
- B5ECDC3B1CA836AD00C7F112 /* CoreStoreBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5AEFAB41C9962AE00AD137F /* CoreStoreBridge.swift */; };
- B5ECDC3C1CA836B600C7F112 /* CSCoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DBE2CC1C9914A900B5CEFA /* CSCoreStore.swift */; };
- B5ECDC3D1CA836BA00C7F112 /* CSError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5519A491CA1F4FB002BEF78 /* CSError.swift */; };
- B5ECDC3E1CA836BE00C7F112 /* CSCoreStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F9571C99B17400D5AC55 /* CSCoreStore+Setup.swift */; };
- B5ECDC401CA836C800C7F112 /* CSInMemoryStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F9681C9AF26D00D5AC55 /* CSInMemoryStore.swift */; };
- B5ECDC411CA836C800C7F112 /* CSSQliteStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F95C1C9A12B800D5AC55 /* CSSQliteStore.swift */; };
- B5ECDC421CA836CF00C7F112 /* CSAsynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5519A5E1CA21954002BEF78 /* CSAsynchronousDataTransaction.swift */; };
- B5ECDC431CA836F800C7F112 /* SetupResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F9721C9C553300D5AC55 /* SetupResult.swift */; };
B5F1DA8D1B9AA97D007C5CBB /* ImportableObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F1DA8C1B9AA97D007C5CBB /* ImportableObject.swift */; };
B5F1DA901B9AA991007C5CBB /* ImportableUniqueObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F1DA8F1B9AA991007C5CBB /* ImportableUniqueObject.swift */; };
B5FAD6A91B50A4B400714891 /* NSProgress+Convenience.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FAD6A81B50A4B300714891 /* NSProgress+Convenience.swift */; };
@@ -779,12 +658,6 @@
B5D3F6441C887C0A00C7492A /* LegacySQLiteStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacySQLiteStore.swift; sourceTree = ""; };
B5D7A5B51CA3BF8F005C752B /* CSInto.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSInto.swift; sourceTree = ""; };
B5D9C8F61B160ED200E64F0E /* CoreStore.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; path = CoreStore.podspec; sourceTree = SOURCE_ROOT; };
- B5D9E3341CA2C317007A9D52 /* CoreStore_iOS7.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CoreStore_iOS7.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- B5D9E3371CA2C6BF007A9D52 /* GCDBlock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = GCDBlock.swift; path = Carthage/Checkouts/GCDKit/Sources/GCDBlock.swift; sourceTree = ""; };
- B5D9E3381CA2C6BF007A9D52 /* GCDGroup.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = GCDGroup.swift; path = Carthage/Checkouts/GCDKit/Sources/GCDGroup.swift; sourceTree = ""; };
- B5D9E33A1CA2C6BF007A9D52 /* GCDQueue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = GCDQueue.swift; path = Carthage/Checkouts/GCDKit/Sources/GCDQueue.swift; sourceTree = ""; };
- B5D9E33B1CA2C6BF007A9D52 /* GCDSemaphore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = GCDSemaphore.swift; path = Carthage/Checkouts/GCDKit/Sources/GCDSemaphore.swift; sourceTree = ""; };
- B5D9E33C1CA2C6BF007A9D52 /* GCDTimer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = GCDTimer.swift; path = Carthage/Checkouts/GCDKit/Sources/GCDTimer.swift; sourceTree = ""; };
B5DBE2CC1C9914A900B5CEFA /* CSCoreStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSCoreStore.swift; sourceTree = ""; };
B5DBE2D11C991B3E00B5CEFA /* CSDataStack.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSDataStack.swift; sourceTree = ""; };
B5DBE2DA1C9939E100B5CEFA /* CoreStoreTests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CoreStoreTests-Bridging-Header.h"; sourceTree = ""; };
@@ -925,15 +798,6 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
- B5D9E32A1CA2C317007A9D52 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- B5D9E32C1CA2C317007A9D52 /* Foundation.framework in Frameworks */,
- B5D9E32D1CA2C317007A9D52 /* CoreData.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
@@ -957,7 +821,6 @@
B52DD17D1BE1F8CC00949AFE /* CoreStoreTests.xctest */,
82BA18891C4BBCBA00A0916E /* CoreStore.framework */,
82BA18921C4BBCBA00A0916E /* CoreStoreTests.xctest */,
- B5D9E3341CA2C317007A9D52 /* CoreStore_iOS7.framework */,
);
name = Products;
sourceTree = "";
@@ -1030,7 +893,6 @@
2F291E3119C6D4D3007AF63F /* Frameworks */ = {
isa = PBXGroup;
children = (
- B5D9E3361CA2C6A3007A9D52 /* GCDKit iOS7 */,
B519E4571C4CD2CA00E7B469 /* GCDKit.framework */,
B5548CD71BD65AE50077652A /* CoreData.framework */,
B56321791BD650DE006C9394 /* CoreData.framework */,
@@ -1152,18 +1014,6 @@
name = Swift;
sourceTree = "";
};
- B5D9E3361CA2C6A3007A9D52 /* GCDKit iOS7 */ = {
- isa = PBXGroup;
- children = (
- B5D9E3371CA2C6BF007A9D52 /* GCDBlock.swift */,
- B5D9E3381CA2C6BF007A9D52 /* GCDGroup.swift */,
- B5D9E33A1CA2C6BF007A9D52 /* GCDQueue.swift */,
- B5D9E33B1CA2C6BF007A9D52 /* GCDSemaphore.swift */,
- B5D9E33C1CA2C6BF007A9D52 /* GCDTimer.swift */,
- );
- name = "GCDKit iOS7";
- sourceTree = "";
- };
B5DBE2CB1C99148100B5CEFA /* ObjectiveC */ = {
isa = PBXGroup;
children = (
@@ -1414,15 +1264,6 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
- B5D9E32E1CA2C317007A9D52 /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- B55717431D15B09D009BDBCA /* CoreStoreBridge.h in Headers */,
- B5D9E32F1CA2C317007A9D52 /* CoreStore.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
@@ -1552,24 +1393,6 @@
productReference = B563216F1BD65082006C9394 /* CoreStore.framework */;
productType = "com.apple.product-type.framework";
};
- B5D9E2ED1CA2C317007A9D52 /* CoreStore iOS7 */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = B5D9E3311CA2C317007A9D52 /* Build configuration list for PBXNativeTarget "CoreStore iOS7" */;
- buildPhases = (
- B5D9E2EE1CA2C317007A9D52 /* Sources */,
- B5D9E32A1CA2C317007A9D52 /* Frameworks */,
- B5D9E32E1CA2C317007A9D52 /* Headers */,
- B5D9E3301CA2C317007A9D52 /* Resources */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = "CoreStore iOS7";
- productName = CoreStore;
- productReference = B5D9E3341CA2C317007A9D52 /* CoreStore_iOS7.framework */;
- productType = "com.apple.product-type.framework";
- };
/* End PBXNativeTarget section */
/* Begin PBXProject section */
@@ -1582,24 +1405,31 @@
TargetAttributes = {
2F03A52F19C5C6DA005002A5 = {
CreatedOnToolsVersion = 6.0;
+ LastSwiftMigration = 0800;
};
2F03A53A19C5C6DA005002A5 = {
CreatedOnToolsVersion = 6.0;
+ LastSwiftMigration = 0800;
};
82BA18881C4BBCBA00A0916E = {
CreatedOnToolsVersion = 7.2;
+ LastSwiftMigration = 0800;
};
82BA18911C4BBCBA00A0916E = {
CreatedOnToolsVersion = 7.2;
+ LastSwiftMigration = 0800;
};
B52DD1731BE1F8CC00949AFE = {
CreatedOnToolsVersion = 7.1;
+ LastSwiftMigration = 0800;
};
B52DD17C1BE1F8CC00949AFE = {
CreatedOnToolsVersion = 7.1;
+ LastSwiftMigration = 0800;
};
B563216E1BD65082006C9394 = {
CreatedOnToolsVersion = 7.0.1;
+ LastSwiftMigration = 0800;
};
};
};
@@ -1616,7 +1446,6 @@
projectDirPath = "";
projectRoot = "";
targets = (
- B5D9E2ED1CA2C317007A9D52 /* CoreStore iOS7 */,
2F03A52F19C5C6DA005002A5 /* CoreStore iOS */,
2F03A53A19C5C6DA005002A5 /* CoreStoreTests iOS */,
82BA18881C4BBCBA00A0916E /* CoreStore tvOS */,
@@ -1678,13 +1507,6 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
- B5D9E3301CA2C317007A9D52 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -2249,130 +2071,6 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
- B5D9E2EE1CA2C317007A9D52 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- B5ECDC0C1CA8161B00C7F112 /* CSGroupBy.swift in Sources */,
- B5EA11DD1CA3AFD9002282F8 /* NSPersistentStoreCoordinator+Setup.swift in Sources */,
- B53FBA191CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */,
- B538BA761D15B3E30003A766 /* CoreStoreBridge.m in Sources */,
- B5ECDC3A1CA8369400C7F112 /* CSDataStack.swift in Sources */,
- B5D9E2EF1CA2C317007A9D52 /* ObjectMonitor.swift in Sources */,
- B5ECDC3B1CA836AD00C7F112 /* CoreStoreBridge.swift in Sources */,
- B5ECDC431CA836F800C7F112 /* SetupResult.swift in Sources */,
- B59983491CA54BC100E1A417 /* CSBaseDataTransaction.swift in Sources */,
- B5E2222B1CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift in Sources */,
- B501FDE81CA8D20500BE22EF /* CSListObserver.swift in Sources */,
- B5D9E2F01CA2C317007A9D52 /* CoreStoreFetchedResultsController.swift in Sources */,
- B5D9E3461CA2C6C4007A9D52 /* GCDQueue.swift in Sources */,
- B5E1B5A31CAA4365007FD580 /* CSCoreStore+Observing.swift in Sources */,
- B5D9E2F11CA2C317007A9D52 /* ImportableUniqueObject.swift in Sources */,
- B5D9E2F21CA2C317007A9D52 /* CoreStore+Setup.swift in Sources */,
- B5D7A5B31CA3B738005C752B /* LegacySQLiteStore.swift in Sources */,
- B5D7A5AF1CA3B738005C752B /* (null) in Sources */,
- B5D7A5B11CA3B738005C752B /* InMemoryStore.swift in Sources */,
- B5ECDC3E1CA836BE00C7F112 /* CSCoreStore+Setup.swift in Sources */,
- B5D9E2F31CA2C317007A9D52 /* CoreStoreError.swift in Sources */,
- B5D9E2F41CA2C317007A9D52 /* Where.swift in Sources */,
- B5677D3E1CD3B1E400322BFC /* ICloudStoreObserver.swift in Sources */,
- B5D9E2F51CA2C317007A9D52 /* FetchedResultsControllerDelegate.swift in Sources */,
- B5D9E2F61CA2C317007A9D52 /* MigrationType.swift in Sources */,
- B5D9E2F71CA2C317007A9D52 /* DataStack+Querying.swift in Sources */,
- B5D9E2F81CA2C317007A9D52 /* SectionBy.swift in Sources */,
- B5D9E2F91CA2C317007A9D52 /* NSManagedObjectContext+Transaction.swift in Sources */,
- B52661411CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */,
- B5D9E2FA1CA2C317007A9D52 /* UnsafeDataTransaction+Observing.swift in Sources */,
- B5E1B5991CAA0C23007FD580 /* CSObjectObserver.swift in Sources */,
- B5ECDC061CA8138100C7F112 /* CSOrderBy.swift in Sources */,
- B5ECDC401CA836C800C7F112 /* CSInMemoryStore.swift in Sources */,
- B5D9E2FB1CA2C317007A9D52 /* MigrationChain.swift in Sources */,
- B5E1B5941CAA0C15007FD580 /* CSObjectMonitor.swift in Sources */,
- B5D9E2FC1CA2C317007A9D52 /* Tweak.swift in Sources */,
- B5D9E2FD1CA2C317007A9D52 /* OrderBy.swift in Sources */,
- B5D9E2FE1CA2C317007A9D52 /* NSManagedObjectContext+Setup.swift in Sources */,
- B5D9E2FF1CA2C317007A9D52 /* CoreStore+Migration.swift in Sources */,
- B5D9E3001CA2C317007A9D52 /* CoreStore+Logging.swift in Sources */,
- B5ECDC1E1CA81A2100C7F112 /* CSDataStack+Querying.swift in Sources */,
- B5D9E3011CA2C317007A9D52 /* Into.swift in Sources */,
- B5ECDC301CA81CDC00C7F112 /* CSCoreStore+Transaction.swift in Sources */,
- B5D9E3021CA2C317007A9D52 /* Select.swift in Sources */,
- B53FBA1F1CAB63FA00F0D40A /* NSFetchedResultsController+ObjectiveC.swift in Sources */,
- B5D7A5B41CA3BAE7005C752B /* NSPersistentStore+Setup.swift in Sources */,
- B5D9E3031CA2C317007A9D52 /* NSManagedObject+Transaction.swift in Sources */,
- B53FBA0C1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift in Sources */,
- B5D9E3041CA2C317007A9D52 /* NSFetchedResultsController+Convenience.swift in Sources */,
- B5D9E3051CA2C317007A9D52 /* (null) in Sources */,
- B51FE5AC1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift in Sources */,
- B5D9E3061CA2C317007A9D52 /* ObjectObserver.swift in Sources */,
- B5D9E3071CA2C317007A9D52 /* NotificationObserver.swift in Sources */,
- B53FBA051CAB300C00F0D40A /* CSMigrationType.swift in Sources */,
- B5D9E3081CA2C317007A9D52 /* ImportableObject.swift in Sources */,
- B53FBA131CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift in Sources */,
- B5ECDC3C1CA836B600C7F112 /* CSCoreStore.swift in Sources */,
- B5D9E3091CA2C317007A9D52 /* MigrationResult.swift in Sources */,
- B53FB9FF1CAB2D2F00F0D40A /* CSMigrationResult.swift in Sources */,
- B5D9E30A1CA2C317007A9D52 /* CoreStore.swift in Sources */,
- B5D9E30B1CA2C317007A9D52 /* ClauseTypes.swift in Sources */,
- B5D9E30C1CA2C317007A9D52 /* BaseDataTransaction+Querying.swift in Sources */,
- B5D9E30D1CA2C317007A9D52 /* MigrationManager.swift in Sources */,
- B5D9E30E1CA2C317007A9D52 /* DataStack+Transaction.swift in Sources */,
- B5A5F2671CAEC50F004AB9AF /* CSSelect.swift in Sources */,
- B5D9E30F1CA2C317007A9D52 /* DataStack.swift in Sources */,
- B5D9E3101CA2C317007A9D52 /* Functions.swift in Sources */,
- B5D9E3431CA2C6C4007A9D52 /* GCDBlock.swift in Sources */,
- B501FDE31CA8D1F500BE22EF /* CSListMonitor.swift in Sources */,
- B5D9E3111CA2C317007A9D52 /* ListMonitor.swift in Sources */,
- B5ECDC2A1CA81CC700C7F112 /* CSDataStack+Transaction.swift in Sources */,
- B5E222241CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift in Sources */,
- B5D9E3121CA2C317007A9D52 /* UnsafeDataTransaction.swift in Sources */,
- B5ECDBE01CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift in Sources */,
- B5D9E3131CA2C317007A9D52 /* DataStack+Migration.swift in Sources */,
- B5D9E3141CA2C317007A9D52 /* BaseDataTransaction.swift in Sources */,
- B559CD441CAA8B6300E4D58B /* CSSetupResult.swift in Sources */,
- B5E1B59E1CAA2568007FD580 /* CSDataStack+Observing.swift in Sources */,
- B5ECDC241CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */,
- B5D9E3151CA2C317007A9D52 /* SaveResult.swift in Sources */,
- B529C2051CA4A2DB007E7EBD /* CSSaveResult.swift in Sources */,
- B5E1B5A91CAA49E2007FD580 /* CSDataStack+Migrating.swift in Sources */,
- B5D9E3161CA2C317007A9D52 /* From.swift in Sources */,
- B5ECDC421CA836CF00C7F112 /* CSAsynchronousDataTransaction.swift in Sources */,
- B5D7A5B71CA3BF8F005C752B /* CSInto.swift in Sources */,
- B5D9E3181CA2C317007A9D52 /* NSProgress+Convenience.swift in Sources */,
- B5D9E3191CA2C317007A9D52 /* SynchronousDataTransaction.swift in Sources */,
- B5ECDBE61CA6BEA300C7F112 /* CSClauseTypes.swift in Sources */,
- B559CD4A1CAA8C6D00E4D58B /* CSStorageInterface.swift in Sources */,
- B5D9E31A1CA2C317007A9D52 /* NSManagedObject+Convenience.swift in Sources */,
- B5D9E31B1CA2C317007A9D52 /* NSManagedObjectModel+Setup.swift in Sources */,
- B5D7A5B01CA3B738005C752B /* StorageInterface.swift in Sources */,
- B5ECDBED1CA6BF2000C7F112 /* CSFrom.swift in Sources */,
- B5D9E3441CA2C6C4007A9D52 /* GCDGroup.swift in Sources */,
- B5D9E31C1CA2C317007A9D52 /* NSManagedObjectContext+Querying.swift in Sources */,
- B5ECDC001CA80CBA00C7F112 /* CSWhere.swift in Sources */,
- B5ECDC121CA816E500C7F112 /* CSTweak.swift in Sources */,
- B5D9E31D1CA2C317007A9D52 /* CoreStoreLogger.swift in Sources */,
- B5D9E31E1CA2C317007A9D52 /* WeakObject.swift in Sources */,
- B5ECDC411CA836C800C7F112 /* CSSQliteStore.swift in Sources */,
- B5D7A5B21CA3B738005C752B /* SQLiteStore.swift in Sources */,
- B501FDDE1CA8D05000BE22EF /* CSSectionBy.swift in Sources */,
- B5D9E3471CA2C6C4007A9D52 /* GCDSemaphore.swift in Sources */,
- B5D9E31F1CA2C317007A9D52 /* GroupBy.swift in Sources */,
- B5D9E3201CA2C317007A9D52 /* DataStack+Observing.swift in Sources */,
- B5ECDBFA1CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift in Sources */,
- B5D9E3211CA2C317007A9D52 /* CoreStore+Transaction.swift in Sources */,
- B5D9E3221CA2C317007A9D52 /* NSManagedObjectContext+CoreStore.swift in Sources */,
- B5D9E3481CA2C6C4007A9D52 /* GCDTimer.swift in Sources */,
- B59FA0AF1CCBACA6007C9BCA /* ICloudStore.swift in Sources */,
- B5D9E3231CA2C317007A9D52 /* CoreStore+Observing.swift in Sources */,
- B5ECDC3D1CA836BA00C7F112 /* CSError.swift in Sources */,
- B5D9E3241CA2C317007A9D52 /* BaseDataTransaction+Importing.swift in Sources */,
- B5D9E3251CA2C317007A9D52 /* DefaultLogger.swift in Sources */,
- B5D9E3261CA2C317007A9D52 /* AsynchronousDataTransaction.swift in Sources */,
- B5D9E3271CA2C317007A9D52 /* CoreStore+Querying.swift in Sources */,
- B5D9E3281CA2C317007A9D52 /* ListObserver.swift in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
@@ -2513,6 +2211,7 @@
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 2.3;
};
name = Debug;
};
@@ -2528,6 +2227,7 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
+ SWIFT_VERSION = 2.3;
};
name = Release;
};
@@ -2546,6 +2246,7 @@
SDKROOT = iphoneos;
SWIFT_OBJC_BRIDGING_HEADER = "CoreStoreTests/CoreStoreTests-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 2.3;
};
name = Debug;
};
@@ -2559,6 +2260,7 @@
PRODUCT_NAME = CoreStoreTests;
SDKROOT = iphoneos;
SWIFT_OBJC_BRIDGING_HEADER = "CoreStoreTests/CoreStoreTests-Bridging-Header.h";
+ SWIFT_VERSION = 2.3;
};
name = Release;
};
@@ -2576,6 +2278,7 @@
SDKROOT = appletvos;
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 2.3;
TARGETED_DEVICE_FAMILY = 3;
};
name = Debug;
@@ -2593,6 +2296,7 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
SDKROOT = appletvos;
SKIP_INSTALL = YES;
+ SWIFT_VERSION = 2.3;
TARGETED_DEVICE_FAMILY = 3;
};
name = Release;
@@ -2609,6 +2313,7 @@
SDKROOT = appletvos;
SWIFT_OBJC_BRIDGING_HEADER = "CoreStoreTests/CoreStoreTests-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 2.3;
TARGETED_DEVICE_FAMILY = 3;
};
name = Debug;
@@ -2625,6 +2330,7 @@
PRODUCT_NAME = CoreStoreTests;
SDKROOT = appletvos;
SWIFT_OBJC_BRIDGING_HEADER = "CoreStoreTests/CoreStoreTests-Bridging-Header.h";
+ SWIFT_VERSION = 2.3;
TARGETED_DEVICE_FAMILY = 3;
};
name = Release;
@@ -2647,6 +2353,7 @@
SDKROOT = macosx;
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 2.3;
};
name = Debug;
};
@@ -2668,6 +2375,7 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
SDKROOT = macosx;
SKIP_INSTALL = YES;
+ SWIFT_VERSION = 2.3;
};
name = Release;
};
@@ -2686,6 +2394,7 @@
SDKROOT = macosx;
SWIFT_OBJC_BRIDGING_HEADER = "CoreStoreTests/CoreStoreTests-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 2.3;
};
name = Debug;
};
@@ -2704,6 +2413,7 @@
PRODUCT_NAME = CoreStoreTests;
SDKROOT = macosx;
SWIFT_OBJC_BRIDGING_HEADER = "CoreStoreTests/CoreStoreTests-Bridging-Header.h";
+ SWIFT_VERSION = 2.3;
};
name = Release;
};
@@ -2722,6 +2432,7 @@
SDKROOT = watchos;
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 2.3;
TARGETED_DEVICE_FAMILY = 4;
};
name = Debug;
@@ -2741,56 +2452,11 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
SDKROOT = watchos;
SKIP_INSTALL = YES;
+ SWIFT_VERSION = 2.3;
TARGETED_DEVICE_FAMILY = 4;
};
name = Release;
};
- B5D9E3321CA2C317007A9D52 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- CLANG_ENABLE_MODULES = YES;
- DEFINES_MODULE = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- DYLIB_INSTALL_NAME_BASE = "@rpath";
- GCC_PREPROCESSOR_DEFINITIONS = (
- "DEBUG=1",
- "USE_FRAMEWORKS=0",
- "SWIFT_OBJC_INTERFACE_HEADER_NAME=<$(SWIFT_MODULE_NAME)/$(SWIFT_OBJC_INTERFACE_HEADER_NAME)>",
- );
- INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 7.0;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- OTHER_SWIFT_FLAGS = "-D DEBUG";
- PRODUCT_NAME = CoreStore_iOS7;
- SDKROOT = iphoneos;
- SKIP_INSTALL = YES;
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- };
- name = Debug;
- };
- B5D9E3331CA2C317007A9D52 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- CLANG_ENABLE_MODULES = YES;
- DEFINES_MODULE = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- DYLIB_INSTALL_NAME_BASE = "@rpath";
- GCC_PREPROCESSOR_DEFINITIONS = (
- "USE_FRAMEWORKS=0",
- "SWIFT_OBJC_INTERFACE_HEADER_NAME=<$(SWIFT_MODULE_NAME)/$(SWIFT_OBJC_INTERFACE_HEADER_NAME)>",
- );
- INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 7.0;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- OTHER_SWIFT_FLAGS = "";
- PRODUCT_NAME = CoreStore_iOS7;
- SDKROOT = iphoneos;
- SKIP_INSTALL = YES;
- };
- name = Release;
- };
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
@@ -2866,15 +2532,6 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
- B5D9E3311CA2C317007A9D52 /* Build configuration list for PBXNativeTarget "CoreStore iOS7" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- B5D9E3321CA2C317007A9D52 /* Debug */,
- B5D9E3331CA2C317007A9D52 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
/* End XCConfigurationList section */
/* Begin XCVersionGroup section */
diff --git a/CoreStore.xcodeproj/xcshareddata/xcschemes/CoreStore iOS7.xcscheme b/CoreStore.xcodeproj/xcshareddata/xcschemes/CoreStore iOS7.xcscheme
deleted file mode 100644
index f69a837..0000000
--- a/CoreStore.xcodeproj/xcshareddata/xcschemes/CoreStore iOS7.xcscheme
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/CoreStoreDemo/CoreStoreDemo.xcodeproj/project.pbxproj b/CoreStoreDemo/CoreStoreDemo.xcodeproj/project.pbxproj
index 48e8c9e..0a6ca15 100644
--- a/CoreStoreDemo/CoreStoreDemo.xcodeproj/project.pbxproj
+++ b/CoreStoreDemo/CoreStoreDemo.xcodeproj/project.pbxproj
@@ -277,6 +277,7 @@
TargetAttributes = {
B54AAD481AF4D26E00848AE0 = {
CreatedOnToolsVersion = 6.3;
+ LastSwiftMigration = 0800;
};
};
};
@@ -461,6 +462,7 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.johnestropia.corestore.demo;
PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 2.3;
};
name = Debug;
};
@@ -473,6 +475,7 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.johnestropia.corestore.demo;
PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 2.3;
};
name = Release;
};
diff --git a/CoreStoreTests/BaseTests/BaseTestCase.swift b/CoreStoreTests/BaseTests/BaseTestCase.swift
index 022b05b..f3f1fe3 100644
--- a/CoreStoreTests/BaseTests/BaseTestCase.swift
+++ b/CoreStoreTests/BaseTests/BaseTestCase.swift
@@ -49,8 +49,8 @@ class BaseTestCase: XCTestCase {
try stack.addStorageAndWait(
SQLiteStore(
fileURL: SQLiteStore.defaultRootDirectory
- .URLByAppendingPathComponent(NSUUID().UUIDString)
- .URLByAppendingPathComponent("\(self.dynamicType)_\(($0 ?? "-null-")).sqlite"),
+ .URLByAppendingPathComponent(NSUUID().UUIDString)!
+ .URLByAppendingPathComponent("\(self.dynamicType)_\(($0 ?? "-null-")).sqlite")!,
configuration: $0,
localStorageOptions: .RecreateStoreOnModelMismatch
)
diff --git a/CoreStoreTests/StorageInterfaceTests.swift b/CoreStoreTests/StorageInterfaceTests.swift
index 8c2e494..2037f8f 100644
--- a/CoreStoreTests/StorageInterfaceTests.swift
+++ b/CoreStoreTests/StorageInterfaceTests.swift
@@ -66,13 +66,12 @@ final class StorageInterfaceTests: XCTestCase {
let defaultRootDirectory = defaultSystemDirectory.URLByAppendingPathComponent(
NSBundle.mainBundle().bundleIdentifier ?? "com.CoreStore.DataStack",
- isDirectory: true
- )
+ isDirectory: true)!
let applicationName = (NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleName") as? String) ?? "CoreData"
let defaultFileURL = defaultRootDirectory
- .URLByAppendingPathComponent(applicationName, isDirectory: false)
- .URLByAppendingPathExtension("sqlite")
+ .URLByAppendingPathComponent(applicationName, isDirectory: false)!
+ .URLByAppendingPathExtension("sqlite")!
XCTAssertEqual(SQLiteStore.defaultRootDirectory, defaultRootDirectory)
XCTAssertEqual(SQLiteStore.defaultFileURL, defaultFileURL)
@@ -95,8 +94,8 @@ final class StorageInterfaceTests: XCTestCase {
dynamic func test_ThatFileURLSQLiteStores_ConfigureCorrectly() {
let fileURL = NSURL(fileURLWithPath: NSTemporaryDirectory())
- .URLByAppendingPathComponent(NSUUID().UUIDString, isDirectory: false)
- .URLByAppendingPathExtension("db")
+ .URLByAppendingPathComponent(NSUUID().UUIDString, isDirectory: false)!
+ .URLByAppendingPathExtension("db")!
let bundles = [NSBundle(forClass: self.dynamicType)]
let store = SQLiteStore(
@@ -151,8 +150,8 @@ final class StorageInterfaceTests: XCTestCase {
).first!
let legacyDefaultFileURL = legacyDefaultRootDirectory
- .URLByAppendingPathComponent(DataStack.applicationName, isDirectory: false)
- .URLByAppendingPathExtension("sqlite")
+ .URLByAppendingPathComponent(DataStack.applicationName, isDirectory: false)!
+ .URLByAppendingPathExtension("sqlite")!
XCTAssertEqual(LegacySQLiteStore.defaultRootDirectory, legacyDefaultRootDirectory)
XCTAssertEqual(LegacySQLiteStore.defaultFileURL, legacyDefaultFileURL)
@@ -175,8 +174,8 @@ final class StorageInterfaceTests: XCTestCase {
dynamic func test_ThatFileURLLegacySQLiteStores_ConfigureCorrectly() {
let fileURL = NSURL(fileURLWithPath: NSTemporaryDirectory())
- .URLByAppendingPathComponent(NSUUID().UUIDString, isDirectory: false)
- .URLByAppendingPathExtension("db")
+ .URLByAppendingPathComponent(NSUUID().UUIDString, isDirectory: false)!
+ .URLByAppendingPathExtension("db")!
let bundles = [NSBundle(forClass: self.dynamicType)]
let store = LegacySQLiteStore(
diff --git a/Sources/Internal/FetchedResultsControllerDelegate.swift b/Sources/Internal/FetchedResultsControllerDelegate.swift
index fe35a11..fbbe544 100644
--- a/Sources/Internal/FetchedResultsControllerDelegate.swift
+++ b/Sources/Internal/FetchedResultsControllerDelegate.swift
@@ -108,7 +108,7 @@ internal final class FetchedResultsControllerDelegate: NSObject, NSFetchedResult
return
}
- guard let actualType = NSFetchedResultsChangeType(rawValue: type.rawValue) else {
+ guard var actualType = NSFetchedResultsChangeType(rawValue: type.rawValue) else {
// This fix is for a bug where iOS passes 0 for NSFetchedResultsChangeType, but this is not a valid enum case.
// Swift will then always execute the first case of the switch causing strange behaviour.
@@ -121,6 +121,16 @@ internal final class FetchedResultsControllerDelegate: NSObject, NSFetchedResult
// https://forums.developer.apple.com/message/9998#9998
// https://forums.developer.apple.com/message/31849#31849
+ if #available(iOS 10.0, tvOS 10.0, watchOS 3.0, *) {
+
+ // I don't know if iOS 10 even attempted to fix this mess...
+ if case .Update = actualType
+ where indexPath != nil && newIndexPath != nil {
+
+ actualType = .Move
+ }
+ }
+
switch actualType {
case .Update:
@@ -130,8 +140,8 @@ internal final class FetchedResultsControllerDelegate: NSObject, NSFetchedResult
}
if self.deletedSections.contains(section)
|| self.insertedSections.contains(section) {
-
- return
+
+ return
}
case .Move:
diff --git a/Sources/Internal/NSManagedObjectContext+Querying.swift b/Sources/Internal/NSManagedObjectContext+Querying.swift
index 9563f77..81dd9d3 100644
--- a/Sources/Internal/NSManagedObjectContext+Querying.swift
+++ b/Sources/Internal/NSManagedObjectContext+Querying.swift
@@ -205,15 +205,22 @@ internal extension NSManagedObjectContext {
internal func fetchCount(fetchRequest: NSFetchRequest) -> Int? {
var count = 0
- var error: NSError?
+ var countError: ErrorType?
self.performBlockAndWait {
- count = self.countForFetchRequest(fetchRequest, error: &error)
+ do {
+
+ count = try self.countForFetchRequest(fetchRequest)
+ }
+ catch {
+
+ countError = error
+ }
}
if count == NSNotFound {
CoreStore.log(
- CoreStoreError(error),
+ CoreStoreError(countError),
"Failed executing fetch request."
)
return nil
diff --git a/Sources/Internal/NSManagedObjectModel+Setup.swift b/Sources/Internal/NSManagedObjectModel+Setup.swift
index 46b9147..2440d60 100644
--- a/Sources/Internal/NSManagedObjectModel+Setup.swift
+++ b/Sources/Internal/NSManagedObjectModel+Setup.swift
@@ -42,7 +42,7 @@ internal extension NSManagedObjectModel {
}
let modelFileURL = NSURL(fileURLWithPath: modelFilePath)
- let versionInfoPlistURL = modelFileURL.URLByAppendingPathComponent("VersionInfo.plist", isDirectory: false)
+ let versionInfoPlistURL = modelFileURL.URLByAppendingPathComponent("VersionInfo.plist", isDirectory: false)!
guard let versionInfo = NSDictionary(contentsOfURL: versionInfoPlistURL),
let versionHashes = versionInfo["NSManagedObjectModel_VersionHashes"] as? [String: AnyObject] else {
@@ -83,7 +83,7 @@ internal extension NSManagedObjectModel {
var modelVersionFileURL: NSURL?
for modelVersion in modelVersions {
- let fileURL = modelFileURL.URLByAppendingPathComponent("\(modelVersion).mom", isDirectory: false)
+ let fileURL = modelFileURL.URLByAppendingPathComponent("\(modelVersion).mom", isDirectory: false)!
if modelVersion == currentModelVersion {
@@ -190,7 +190,7 @@ internal extension NSManagedObjectModel {
}
let versionModelFileURL = modelFileURL.URLByAppendingPathComponent("\(modelVersion).mom", isDirectory: false)
- guard let model = NSManagedObjectModel(contentsOfURL: versionModelFileURL) else {
+ guard let model = NSManagedObjectModel(contentsOfURL: versionModelFileURL!) else {
return nil
}
diff --git a/Sources/Migrating/DataStack+Migration.swift b/Sources/Migrating/DataStack+Migration.swift
index 0924e85..9935dea 100644
--- a/Sources/Migrating/DataStack+Migration.swift
+++ b/Sources/Migrating/DataStack+Migration.swift
@@ -756,20 +756,19 @@ public extension DataStack {
let fileURL = storage.fileURL
let temporaryDirectoryURL = NSURL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true)
- .URLByAppendingPathComponent(NSBundle.mainBundle().bundleIdentifier ?? "com.CoreStore.DataStack")
+ .URLByAppendingPathComponent(NSBundle.mainBundle().bundleIdentifier ?? "com.CoreStore.DataStack")!
.URLByAppendingPathComponent(NSProcessInfo().globallyUniqueString)
let fileManager = NSFileManager.defaultManager()
try! fileManager.createDirectoryAtURL(
- temporaryDirectoryURL,
+ temporaryDirectoryURL!,
withIntermediateDirectories: true,
attributes: nil
)
- let temporaryFileURL = temporaryDirectoryURL.URLByAppendingPathComponent(
+ let temporaryFileURL = temporaryDirectoryURL!.URLByAppendingPathComponent(
fileURL.lastPathComponent!,
- isDirectory: false
- )
+ isDirectory: false)!
let migrationManager = MigrationManager(
sourceModel: sourceModel,
diff --git a/Sources/Setup/StorageInterfaces/LegacySQLiteStore.swift b/Sources/Setup/StorageInterfaces/LegacySQLiteStore.swift
index f4bdaf2..f3abdd9 100644
--- a/Sources/Setup/StorageInterfaces/LegacySQLiteStore.swift
+++ b/Sources/Setup/StorageInterfaces/LegacySQLiteStore.swift
@@ -65,8 +65,7 @@ public final class LegacySQLiteStore: LocalStorage, DefaultInitializableStore {
self.fileURL = LegacySQLiteStore.defaultRootDirectory.URLByAppendingPathComponent(
fileName,
- isDirectory: false
- )
+ isDirectory: false)!
self.configuration = configuration
self.mappingModelBundles = mappingModelBundles
self.localStorageOptions = localStorageOptions
@@ -210,8 +209,8 @@ public final class LegacySQLiteStore: LocalStorage, DefaultInitializableStore {
}()
internal static let defaultFileURL = LegacySQLiteStore.defaultRootDirectory
- .URLByAppendingPathComponent(DataStack.applicationName, isDirectory: false)
- .URLByAppendingPathExtension("sqlite")
+ .URLByAppendingPathComponent(DataStack.applicationName, isDirectory: false)!
+ .URLByAppendingPathExtension("sqlite")!
// MARK: Private
diff --git a/Sources/Setup/StorageInterfaces/SQLiteStore.swift b/Sources/Setup/StorageInterfaces/SQLiteStore.swift
index a566a89..15c273c 100644
--- a/Sources/Setup/StorageInterfaces/SQLiteStore.swift
+++ b/Sources/Setup/StorageInterfaces/SQLiteStore.swift
@@ -63,7 +63,7 @@ public final class SQLiteStore: LocalStorage, DefaultInitializableStore {
public init(fileName: String, configuration: String? = nil, mappingModelBundles: [NSBundle] = NSBundle.allBundles(), localStorageOptions: LocalStorageOptions = nil) {
self.fileURL = SQLiteStore.defaultRootDirectory
- .URLByAppendingPathComponent(fileName, isDirectory: false)
+ .URLByAppendingPathComponent(fileName, isDirectory: false)!
self.configuration = configuration
self.mappingModelBundles = mappingModelBundles
self.localStorageOptions = localStorageOptions
@@ -79,7 +79,7 @@ public final class SQLiteStore: LocalStorage, DefaultInitializableStore {
*/
public init() {
- self.fileURL = SQLiteStore.defaultFileURL
+ self.fileURL = SQLiteStore.defaultFileURL!
self.configuration = nil
self.mappingModelBundles = NSBundle.allBundles()
self.localStorageOptions = nil
@@ -206,15 +206,13 @@ public final class SQLiteStore: LocalStorage, DefaultInitializableStore {
return defaultSystemDirectory.URLByAppendingPathComponent(
NSBundle.mainBundle().bundleIdentifier ?? "com.CoreStore.DataStack",
- isDirectory: true
- )
+ isDirectory: true)!
}()
internal static let defaultFileURL = SQLiteStore.defaultRootDirectory
.URLByAppendingPathComponent(
(NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleName") as? String) ?? "CoreData",
- isDirectory: false
- )
+ isDirectory: false)!
.URLByAppendingPathExtension("sqlite")
From 6cef8f4b4fc6bb1686c1375fea74b7da2ba55956 Mon Sep 17 00:00:00 2001
From: John Rommel Estropia
Date: Sat, 17 Sep 2016 13:23:56 +0900
Subject: [PATCH 08/15] updated travis yml
---
.travis.yml | 25 ++++++++++----------
Carthage/Checkouts/GCDKit | 2 +-
CoreStore.podspec | 2 +-
README.md | 35 ++++++++++------------------
Sources/ObjectiveC/CoreStoreBridge.m | 15 ------------
5 files changed, 27 insertions(+), 52 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index ca29d13..71b6942 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,5 +1,5 @@
language: objective-c
-osx_image: xcode7.3
+osx_image: xcode8
sudo: false
git:
submodules: false
@@ -9,17 +9,18 @@ env:
global:
- LC_CTYPE=en_US.UTF-8
- LANG=en_US.UTF-8
- matrix:
- - DESTINATION="OS=9.3,name=iPhone 6s" SCHEME="CoreStore iOS" SDK=iphonesimulator9.3 RUN_TESTS="YES" POD_LINT="NO"
- - DESTINATION="OS=9.0,name=iPhone 6 Plus" SCHEME="CoreStore iOS" SDK=iphonesimulator9.3 RUN_TESTS="YES" POD_LINT="NO"
- - DESTINATION="OS=8.4,name=iPhone 6" SCHEME="CoreStore iOS" SDK=iphonesimulator9.3 RUN_TESTS="YES" POD_LINT="NO"
- - DESTINATION="OS=8.3,name=iPhone 5S" SCHEME="CoreStore iOS" SDK=iphonesimulator9.3 RUN_TESTS="YES" POD_LINT="NO"
- - DESTINATION="OS=8.2,name=iPhone 5" SCHEME="CoreStore iOS" SDK=iphonesimulator9.3 RUN_TESTS="YES" POD_LINT="NO"
- - DESTINATION="OS=8.1,name=iPhone 4S" SCHEME="CoreStore iOS" SDK=iphonesimulator9.3 RUN_TESTS="YES" POD_LINT="YES"
- - DESTINATION="OS=8.1,name=iPhone 4S" SCHEME="CoreStore iOS7" SDK=iphonesimulator9.3 RUN_TESTS="YES" POD_LINT="YES"
- - DESTINATION="arch=x86_64" SCHEME="CoreStore OSX" SDK=macosx10.11 RUN_TESTS="YES" POD_LINT="NO"
- - DESTINATION="OS=2.2,name=Apple Watch - 42mm" SCHEME="CoreStore watchOS" SDK=watchsimulator2.2 RUN_TESTS="NO" POD_LINT="NO"
- - DESTINATION="OS=9.2,name=Apple TV 1080p" SCHEME="CoreStore tvOS" SDK=appletvsimulator9.2 RUN_TESTS="YES" POD_LINT="NO"
+ matrix:
+ - DESTINATION="OS=10.0,name=iPhone 7" SCHEME="CoreStore iOS" SDK=iphonesimulator10.0 RUN_TESTS="YES" POD_LINT="NO"
+ - DESTINATION="OS=9.3,name=iPhone 6s" SCHEME="CoreStore iOS" SDK=iphonesimulator10.0 RUN_TESTS="YES" POD_LINT="NO"
+ - DESTINATION="OS=9.0,name=iPhone 6 Plus" SCHEME="CoreStore iOS" SDK=iphonesimulator10.0 RUN_TESTS="YES" POD_LINT="NO"
+ - DESTINATION="OS=8.4,name=iPhone 6" SCHEME="CoreStore iOS" SDK=iphonesimulator10.0 RUN_TESTS="YES" POD_LINT="NO"
+ - DESTINATION="OS=8.3,name=iPhone 5S" SCHEME="CoreStore iOS" SDK=iphonesimulator10.0 RUN_TESTS="YES" POD_LINT="NO"
+ - DESTINATION="OS=8.2,name=iPhone 5" SCHEME="CoreStore iOS" SDK=iphonesimulator10.0 RUN_TESTS="YES" POD_LINT="NO"
+ - DESTINATION="OS=8.1,name=iPhone 4S" SCHEME="CoreStore iOS" SDK=iphonesimulator10.0 RUN_TESTS="YES" POD_LINT="YES"
+ - DESTINATION="arch=x86_64" SCHEME="CoreStore OSX" SDK=macosx10.12 RUN_TESTS="YES" POD_LINT="NO"
+ - DESTINATION="OS=3.0,name=Apple Watch - 42mm" SCHEME="CoreStore watchOS" SDK=watchsimulator3.0 RUN_TESTS="NO" POD_LINT="NO"
+ - DESTINATION="OS=2.2,name=Apple Watch - 42mm" SCHEME="CoreStore watchOS" SDK=watchsimulator3.0 RUN_TESTS="NO" POD_LINT="NO"
+ - DESTINATION="OS=9.2,name=Apple TV 1080p" SCHEME="CoreStore tvOS" SDK=appletvsimulator10.0 RUN_TESTS="YES" POD_LINT="NO"
before_install:
- gem install cocoapods --no-rdoc --no-ri --no-document --quiet
- gem install xcpretty --no-rdoc --no-ri --no-document --quiet
diff --git a/Carthage/Checkouts/GCDKit b/Carthage/Checkouts/GCDKit
index 7f88719..a7f2b8a 160000
--- a/Carthage/Checkouts/GCDKit
+++ b/Carthage/Checkouts/GCDKit
@@ -1 +1 @@
-Subproject commit 7f88719fbd4824a378576d679b0b929816973f25
+Subproject commit a7f2b8ac848eaa3ec97682f165505fa377f1fe8c
diff --git a/CoreStore.podspec b/CoreStore.podspec
index 3e79aec..785a259 100644
--- a/CoreStore.podspec
+++ b/CoreStore.podspec
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "CoreStore"
- s.version = "2.0.6"
+ s.version = "2.1.0"
s.license = "MIT"
s.summary = "Unleashing the real power of Core Data with the elegance and safety of Swift"
s.homepage = "https://github.com/JohnEstropia/CoreStore"
diff --git a/README.md b/README.md
index 4500c76..8d8b65b 100644
--- a/README.md
+++ b/README.md
@@ -17,8 +17,12 @@ Unleashing the real power of Core Data with the elegance and safety of Swift
-* Swift 2.2 (Xcode 7.3)
+
* iOS 7+ / macOS 10.10+ / watchOS 2.0+ / tvOS 9.0+
+- for Swift 2.2 (Xcode 7.3 and iOS 7): Use version [2.0.6](https://github.com/JohnEstropia/CoreStore/releases/tag/2.0.6) or the [master_ios_7_to_9](https://github.com/JohnEstropia/CoreStore/tree/master_ios_7_to_9) branch
+- for Swift 2.3 (Xcode 8): Use version [2.1.0](https://github.com/JohnEstropia/CoreStore/releases/tag/2.1.0) or the [master](https://github.com/JohnEstropia/CoreStore/tree/master) branch
+- for Swift 3 (Xcode 8): Use the [swift3_develop](https://github.com/JohnEstropia/CoreStore/tree/swift3_develop) branch
+
* **New in CoreStore 2.0:** Objective-C support! All CoreStore types now have their corresponding Objective-C "bridging classes". Perfect for projects transitioning from Objective-C to Swift!
Upgrading from CoreStore 1.x to 2.x? Check out the [new features](#new-in-corestore-20) and make sure to read the [Migration guide](#upgrading-from-1xx-to-2xx).
@@ -1411,13 +1415,7 @@ NSArray *objects =
CSSortAscending(CSKeyPath(MYPerson, firstName)), nil)]];
```
-To use these syntax sugars, include *CoreStoreBridge.h* in your Objective-C source files. For projects that support iOS 7 (and thus cannot build CoreStore as a module), you will need to add
-```
-SWIFT_OBJC_INTERFACE_HEADER_NAME=$(SWIFT_OBJC_INTERFACE_HEADER_NAME)
-```
-to your target's `GCC_PREPROCESSOR_DEFINITIONS` build setting.
-
-
+To use these syntax sugars, include *CoreStoreBridge.h* in your Objective-C source files.
# Roadmap
@@ -1429,14 +1427,14 @@ to your target's `GCC_PREPROCESSOR_DEFINITIONS` build setting.
# Installation
- Requires:
- - iOS 7 SDK and above
- - Swift 2.2 (Xcode 7.3)
+ - iOS 8 SDK and above
+ - Swift 2.3 (Xcode 8)
- Dependencies:
- [GCDKit](https://github.com/JohnEstropia/GCDKit)
- Other notes:
- The `com.apple.CoreData.ConcurrencyDebug` debug argument should be turned off for the app. CoreStore already guarantees safety for you by making the main context read-only, and by only executing transactions serially.
-### Install with CocoaPods (iOS 7 not supported)
+### Install with CocoaPods
```
pod 'CoreStore'
```
@@ -1445,8 +1443,8 @@ This installs CoreStore as a framework. Declare `import CoreStore` in your swift
### Install with Carthage
In your `Cartfile`, add
```
-github "JohnEstropia/CoreStore" >= 2.0.0
-github "JohnEstropia/GCDKit" >= 1.2.5
+github "JohnEstropia/CoreStore" >= 2.1.0
+github "JohnEstropia/GCDKit" >= 1.3.0
```
and run
```
@@ -1459,7 +1457,7 @@ git submodule add https://github.com/JohnEstropia/CoreStore.git
-
-
# Changesets
### Upgrading from 1.x.x to 2.x.x
**Obsoleted**
diff --git a/Sources/ObjectiveC/CoreStoreBridge.m b/Sources/ObjectiveC/CoreStoreBridge.m
index 6c770c5..64f42a4 100644
--- a/Sources/ObjectiveC/CoreStoreBridge.m
+++ b/Sources/ObjectiveC/CoreStoreBridge.m
@@ -26,23 +26,8 @@
#import "CoreStoreBridge.h"
-#if USE_FRAMEWORKS
#import
-#elif !defined(SWIFT_OBJC_INTERFACE_HEADER_NAME)
-#error Add "SWIFT_OBJC_INTERFACE_HEADER_NAME=$(SWIFT_OBJC_INTERFACE_HEADER_NAME)" to the project's GCC_PREPROCESSOR_DEFINITIONS settings
-
-#elif __has_include(SWIFT_OBJC_INTERFACE_HEADER_NAME)
-#import SWIFT_OBJC_INTERFACE_HEADER_NAME
-
-#else
-#define _STRINGIFY(x) #x
-#define STRINGIFY(x) _STRINGIFY(x)
-#import STRINGIFY(SWIFT_OBJC_INTERFACE_HEADER_NAME)
-
-#endif
-
-
#pragma mark - Clauses
From effa231719054f0d336eadb8708fd55bf604f3bc Mon Sep 17 00:00:00 2001
From: John Rommel Estropia
Date: Sat, 17 Sep 2016 13:37:00 +0900
Subject: [PATCH 09/15] fix travis
---
.travis.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.travis.yml b/.travis.yml
index 71b6942..3e38fa1 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -9,7 +9,7 @@ env:
global:
- LC_CTYPE=en_US.UTF-8
- LANG=en_US.UTF-8
- matrix:
+ matrix:
- DESTINATION="OS=10.0,name=iPhone 7" SCHEME="CoreStore iOS" SDK=iphonesimulator10.0 RUN_TESTS="YES" POD_LINT="NO"
- DESTINATION="OS=9.3,name=iPhone 6s" SCHEME="CoreStore iOS" SDK=iphonesimulator10.0 RUN_TESTS="YES" POD_LINT="NO"
- DESTINATION="OS=9.0,name=iPhone 6 Plus" SCHEME="CoreStore iOS" SDK=iphonesimulator10.0 RUN_TESTS="YES" POD_LINT="NO"
From e5f162c5e11ba26301e6388a8dd8e35f632a44e1 Mon Sep 17 00:00:00 2001
From: John Rommel Estropia
Date: Sat, 17 Sep 2016 13:59:04 +0900
Subject: [PATCH 10/15] minor readme edits
---
README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 8d8b65b..114485a 100644
--- a/README.md
+++ b/README.md
@@ -19,9 +19,9 @@ Unleashing the real power of Core Data with the elegance and safety of Swift
* iOS 7+ / macOS 10.10+ / watchOS 2.0+ / tvOS 9.0+
-- for Swift 2.2 (Xcode 7.3 and iOS 7): Use version [2.0.6](https://github.com/JohnEstropia/CoreStore/releases/tag/2.0.6) or the [master_ios_7_to_9](https://github.com/JohnEstropia/CoreStore/tree/master_ios_7_to_9) branch
-- for Swift 2.3 (Xcode 8): Use version [2.1.0](https://github.com/JohnEstropia/CoreStore/releases/tag/2.1.0) or the [master](https://github.com/JohnEstropia/CoreStore/tree/master) branch
-- for Swift 3 (Xcode 8): Use the [swift3_develop](https://github.com/JohnEstropia/CoreStore/tree/swift3_develop) branch
+ - for Swift 2.2 (Xcode 7.3 and iOS 7): Use version [2.0.6](https://github.com/JohnEstropia/CoreStore/releases/tag/2.0.6) or the [master_ios_7_to_9](https://github.com/JohnEstropia/CoreStore/tree/master_ios_7_to_9) branch
+ - for Swift 2.3 (Xcode 8): Use version [2.1.0](https://github.com/JohnEstropia/CoreStore/releases/tag/2.1.0) or the [master](https://github.com/JohnEstropia/CoreStore/tree/master) branch
+ - for Swift 3 (Xcode 8): Use the [swift3_develop](https://github.com/JohnEstropia/CoreStore/tree/swift3_develop) branch
* **New in CoreStore 2.0:** Objective-C support! All CoreStore types now have their corresponding Objective-C "bridging classes". Perfect for projects transitioning from Objective-C to Swift!
From 2da659a967b57acaa544bffeda0a9a87c70878ff Mon Sep 17 00:00:00 2001
From: John Rommel Estropia
Date: Sat, 17 Sep 2016 14:14:29 +0900
Subject: [PATCH 11/15] travis yml update
---
.travis.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.travis.yml b/.travis.yml
index 3e38fa1..00d07cc 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -11,7 +11,7 @@ env:
- LANG=en_US.UTF-8
matrix:
- DESTINATION="OS=10.0,name=iPhone 7" SCHEME="CoreStore iOS" SDK=iphonesimulator10.0 RUN_TESTS="YES" POD_LINT="NO"
- - DESTINATION="OS=9.3,name=iPhone 6s" SCHEME="CoreStore iOS" SDK=iphonesimulator10.0 RUN_TESTS="YES" POD_LINT="NO"
+ - DESTINATION="OS=9.3,name=iPhone 6S" SCHEME="CoreStore iOS" SDK=iphonesimulator10.0 RUN_TESTS="YES" POD_LINT="NO"
- DESTINATION="OS=9.0,name=iPhone 6 Plus" SCHEME="CoreStore iOS" SDK=iphonesimulator10.0 RUN_TESTS="YES" POD_LINT="NO"
- DESTINATION="OS=8.4,name=iPhone 6" SCHEME="CoreStore iOS" SDK=iphonesimulator10.0 RUN_TESTS="YES" POD_LINT="NO"
- DESTINATION="OS=8.3,name=iPhone 5S" SCHEME="CoreStore iOS" SDK=iphonesimulator10.0 RUN_TESTS="YES" POD_LINT="NO"
From af141d4a3122814626818506b0034f514eff6eca Mon Sep 17 00:00:00 2001
From: John Rommel Estropia
Date: Sat, 17 Sep 2016 14:26:33 +0900
Subject: [PATCH 12/15] travis yml update
---
.travis.yml | 1 -
1 file changed, 1 deletion(-)
diff --git a/.travis.yml b/.travis.yml
index 00d07cc..2a700db 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -11,7 +11,6 @@ env:
- LANG=en_US.UTF-8
matrix:
- DESTINATION="OS=10.0,name=iPhone 7" SCHEME="CoreStore iOS" SDK=iphonesimulator10.0 RUN_TESTS="YES" POD_LINT="NO"
- - DESTINATION="OS=9.3,name=iPhone 6S" SCHEME="CoreStore iOS" SDK=iphonesimulator10.0 RUN_TESTS="YES" POD_LINT="NO"
- DESTINATION="OS=9.0,name=iPhone 6 Plus" SCHEME="CoreStore iOS" SDK=iphonesimulator10.0 RUN_TESTS="YES" POD_LINT="NO"
- DESTINATION="OS=8.4,name=iPhone 6" SCHEME="CoreStore iOS" SDK=iphonesimulator10.0 RUN_TESTS="YES" POD_LINT="NO"
- DESTINATION="OS=8.3,name=iPhone 5S" SCHEME="CoreStore iOS" SDK=iphonesimulator10.0 RUN_TESTS="YES" POD_LINT="NO"
From f18d62f64307c2d06358b35f33a5cc9d1c3290c9 Mon Sep 17 00:00:00 2001
From: John Rommel Estropia
Date: Sat, 17 Sep 2016 14:27:36 +0900
Subject: [PATCH 13/15] travis yml update
---
.travis.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index 2a700db..869e0d4 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -36,8 +36,8 @@ script:
xcodebuild -workspace CoreStore.xcworkspace -scheme "$SCHEME" -sdk "$SDK" -destination "$DESTINATION" -configuration Debug ONLY_ACTIVE_ARCH=NO clean test | xcpretty -c;
xcodebuild -workspace CoreStore.xcworkspace -scheme "$SCHEME" -sdk "$SDK" -destination "$DESTINATION" -configuration Release ONLY_ACTIVE_ARCH=NO clean test | xcpretty -c;
fi
- - xcodebuild -workspace "CoreStore.xcworkspace" -scheme "CoreStore iOS" -sdk "iphonesimulator9.3" -destination "OS=9.3,name=iPhone 6s" -configuration Debug ONLY_ACTIVE_ARCH=NO clean test | xcpretty -c;
- - xcodebuild -workspace "CoreStore.xcworkspace" -scheme "CoreStore iOS" -sdk "iphonesimulator9.3" -destination "OS=9.3,name=iPhone 6s" -configuration Release ONLY_ACTIVE_ARCH=NO clean test | xcpretty -c;
+ - xcodebuild -workspace "CoreStore.xcworkspace" -scheme "CoreStore iOS" -sdk "iphonesimulator10.0" -destination "OS=10.0,name=iPhone 7" -configuration Debug ONLY_ACTIVE_ARCH=NO clean test | xcpretty -c;
+ - xcodebuild -workspace "CoreStore.xcworkspace" -scheme "CoreStore iOS" -sdk "iphonesimulator10.0" -destination "OS=10.0,name=iPhone 7" -configuration Release ONLY_ACTIVE_ARCH=NO clean test | xcpretty -c;
- if [ $POD_LINT == "YES" ]; then
pod lib lint --quick;
fi
From 4d2ebe4ea8875bbacc7435124bb87c9708d1c35b Mon Sep 17 00:00:00 2001
From: John Rommel Estropia
Date: Tue, 27 Sep 2016 02:39:28 +0900
Subject: [PATCH 14/15] workaround #100 (NSFetchRequest.affectedStores ARC bug)
---
CoreStore.podspec | 2 +-
CoreStore.xcodeproj/project.pbxproj | 10 -----
Sources/Info.plist | 2 +-
Sources/Internal/CoreStoreFetchRequest.swift | 42 --------------------
Sources/ObjectiveC/CoreStoreBridge.h | 9 +++++
Sources/ObjectiveC/CoreStoreBridge.m | 18 +++++++++
6 files changed, 29 insertions(+), 54 deletions(-)
delete mode 100644 Sources/Internal/CoreStoreFetchRequest.swift
diff --git a/CoreStore.podspec b/CoreStore.podspec
index 785a259..5091e12 100644
--- a/CoreStore.podspec
+++ b/CoreStore.podspec
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "CoreStore"
- s.version = "2.1.0"
+ s.version = "2.1.1"
s.license = "MIT"
s.summary = "Unleashing the real power of Core Data with the elegance and safety of Swift"
s.homepage = "https://github.com/JohnEstropia/CoreStore"
diff --git a/CoreStore.xcodeproj/project.pbxproj b/CoreStore.xcodeproj/project.pbxproj
index 8611ea5..cc811ec 100644
--- a/CoreStore.xcodeproj/project.pbxproj
+++ b/CoreStore.xcodeproj/project.pbxproj
@@ -145,10 +145,6 @@
B52557881D02DE8100E51965 /* 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 */; };
- B52661401CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526613F1CADD585007B85D9 /* CoreStoreFetchRequest.swift */; };
- B52661421CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526613F1CADD585007B85D9 /* CoreStoreFetchRequest.swift */; };
- B52661431CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526613F1CADD585007B85D9 /* CoreStoreFetchRequest.swift */; };
- B52661441CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526613F1CADD585007B85D9 /* CoreStoreFetchRequest.swift */; };
B529C2041CA4A2DB007E7EBD /* 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 */; };
@@ -600,7 +596,6 @@
B525577F1D029D2500E51965 /* TweakTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TweakTests.swift; sourceTree = ""; };
B52557831D02A07400E51965 /* SectionByTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SectionByTests.swift; sourceTree = ""; };
B52557871D02DE8100E51965 /* FetchTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FetchTests.swift; sourceTree = ""; };
- B526613F1CADD585007B85D9 /* CoreStoreFetchRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreStoreFetchRequest.swift; sourceTree = ""; };
B529C2031CA4A2DB007E7EBD /* CSSaveResult.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSSaveResult.swift; sourceTree = ""; };
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; };
@@ -1178,7 +1173,6 @@
B5E834BA1B7691F3001D3D50 /* Functions.swift */,
B5FAD6AB1B51285300714891 /* MigrationManager.swift */,
B5E84F2B1AFF849C0064E85B /* NotificationObserver.swift */,
- B526613F1CADD585007B85D9 /* CoreStoreFetchRequest.swift */,
B5E84F2C1AFF849C0064E85B /* NSManagedObjectContext+CoreStore.swift */,
B5E84F351AFF85470064E85B /* NSManagedObjectContext+Querying.swift */,
B5E84F321AFF85470064E85B /* NSManagedObjectContext+Setup.swift */,
@@ -1558,7 +1552,6 @@
B53FB9FE1CAB2D2F00F0D40A /* CSMigrationResult.swift in Sources */,
B5DBE2D21C991B3E00B5CEFA /* CSDataStack.swift in Sources */,
B50392F91C478FF3009900CA /* NSManagedObject+Transaction.swift in Sources */,
- B52661401CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */,
B53FBA181CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */,
B5202CFA1C04688100DED140 /* NSFetchedResultsController+Convenience.swift in Sources */,
B5519A591CA2008C002BEF78 /* CSBaseDataTransaction.swift in Sources */,
@@ -1708,7 +1701,6 @@
82BA18B41C4BBD3900A0916E /* BaseDataTransaction+Importing.swift in Sources */,
B53FBA1A1CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */,
82BA18CA1C4BBD5900A0916E /* MigrationResult.swift in Sources */,
- B52661421CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */,
B5519A5A1CA2008C002BEF78 /* CSBaseDataTransaction.swift in Sources */,
B5ECDBE11CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift in Sources */,
82BA18C11C4BBD5300A0916E /* CoreStore+Observing.swift in Sources */,
@@ -1857,7 +1849,6 @@
B52DD1C71BE1F94600949AFE /* NSManagedObjectContext+Querying.swift in Sources */,
B52DD1C81BE1F94600949AFE /* NSManagedObjectContext+Setup.swift in Sources */,
B52DD1C31BE1F94600949AFE /* NotificationObserver.swift in Sources */,
- B52661441CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */,
B52DD1A81BE1F93200949AFE /* DataStack+Querying.swift in Sources */,
B5220E221D130818009BC71E /* CSSectionBy.swift in Sources */,
B52DD1BC1BE1F94000949AFE /* MigrationResult.swift in Sources */,
@@ -2001,7 +1992,6 @@
B53FBA011CAB2D2F00F0D40A /* CSMigrationResult.swift in Sources */,
B5DBE2D41C991B3E00B5CEFA /* CSDataStack.swift in Sources */,
B50392FA1C47963F009900CA /* NSManagedObject+Transaction.swift in Sources */,
- B52661431CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */,
B53FBA1B1CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */,
B5519A5B1CA2008C002BEF78 /* CSBaseDataTransaction.swift in Sources */,
B5ECDBE21CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift in Sources */,
diff --git a/Sources/Info.plist b/Sources/Info.plist
index 0100960..449c7b6 100644
--- a/Sources/Info.plist
+++ b/Sources/Info.plist
@@ -15,7 +15,7 @@
CFBundlePackageType
FMWK
CFBundleShortVersionString
- 2.0.6
+ 2.1.1
CFBundleSignature
????
CFBundleVersion
diff --git a/Sources/Internal/CoreStoreFetchRequest.swift b/Sources/Internal/CoreStoreFetchRequest.swift
deleted file mode 100644
index 033b2df..0000000
--- a/Sources/Internal/CoreStoreFetchRequest.swift
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// CoreStoreFetchRequest.swift
-// CoreStore
-//
-// Copyright © 2016 John Rommel Estropia
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-
-import Foundation
-import CoreData
-
-
-// MARK: - CoreStoreFetchRequest
-
-// Bugfix for NSFetchRequest messing up memory management for `affectedStores`
-// http://stackoverflow.com/questions/14396375/nsfetchedresultscontroller-crashes-in-ios-6-if-affectedstores-is-specified
-internal final class CoreStoreFetchRequest: NSFetchRequest {
-
- @objc
- override var affectedStores: [NSPersistentStore]? {
-
- get { return super.affectedStores }
- set { super.affectedStores = newValue }
- }
-}
diff --git a/Sources/ObjectiveC/CoreStoreBridge.h b/Sources/ObjectiveC/CoreStoreBridge.h
index bf8faf3..7809fd1 100644
--- a/Sources/ObjectiveC/CoreStoreBridge.h
+++ b/Sources/ObjectiveC/CoreStoreBridge.h
@@ -570,4 +570,13 @@ CORESTORE_EXTERN
CSWhere *_Nonnull CSWherePredicate(NSPredicate *_Nonnull predicate) CORESTORE_RETURNS_RETAINED;
+#pragma mark CoreStoreFetchRequest
+
+// Bugfix for NSFetchRequest messing up memory management for `affectedStores`
+// http://stackoverflow.com/questions/14396375/nsfetchedresultscontroller-crashes-in-ios-6-if-affectedstores-is-specified
+NS_SWIFT_NAME(CoreStoreFetchRequest)
+@interface _CSFetchRequest: NSFetchRequest
+@end
+
+
#endif /* CoreStoreBridge_h */
diff --git a/Sources/ObjectiveC/CoreStoreBridge.m b/Sources/ObjectiveC/CoreStoreBridge.m
index 64f42a4..2a7039d 100644
--- a/Sources/ObjectiveC/CoreStoreBridge.m
+++ b/Sources/ObjectiveC/CoreStoreBridge.m
@@ -218,3 +218,21 @@ CSWhere *_Nonnull CSWherePredicate(NSPredicate *_Nonnull predicate) CORESTORE_RE
return [[CSWhere alloc] initWithPredicate:predicate];
}
+
+
+#pragma mark CoreStoreFetchRequest
+
+@interface _CSFetchRequest ()
+@end
+
+@implementation _CSFetchRequest
+
+- (NSArray *)affectedStores {
+
+ // Bugfix for NSFetchRequest messing up memory management for `affectedStores`
+ // http://stackoverflow.com/questions/14396375/nsfetchedresultscontroller-crashes-in-ios-6-if-affectedstores-is-specified
+ CFBridgingRetain([super affectedStores]);
+ return [super affectedStores];
+}
+
+@end
From ed8c7b35e8c32131dc9ddb4cfa62c33be441b91e Mon Sep 17 00:00:00 2001
From: John Estropia
Date: Tue, 27 Sep 2016 17:31:08 +0900
Subject: [PATCH 15/15] Reduce leaking (a little) on the workaround for
NSFetchRequest.affectedStores ARC bug
---
CoreStoreTests/FromTests.swift | 120 +++++++++++++--------------
CoreStoreTests/GroupByTests.swift | 2 +-
CoreStoreTests/OrderByTests.swift | 2 +-
CoreStoreTests/TweakTests.swift | 2 +-
CoreStoreTests/WhereTests.swift | 2 +-
Sources/ObjectiveC/CoreStoreBridge.h | 3 +
Sources/ObjectiveC/CoreStoreBridge.m | 25 +++++-
Sources/Observing/ListMonitor.swift | 4 +-
8 files changed, 91 insertions(+), 69 deletions(-)
diff --git a/CoreStoreTests/FromTests.swift b/CoreStoreTests/FromTests.swift
index 48665ce..5c03671 100644
--- a/CoreStoreTests/FromTests.swift
+++ b/CoreStoreTests/FromTests.swift
@@ -74,33 +74,33 @@ final class FromTests: BaseTestCase {
let from = From()
- let request = NSFetchRequest()
+ let request = CoreStoreFetchRequest()
let storesFound = from.applyToFetchRequest(request, context: dataStack.mainContext)
XCTAssertTrue(storesFound)
XCTAssertNotNil(request.entity)
- XCTAssertNotNil(request.affectedStores)
+ XCTAssertNotNil(request.safeAffectedStores)
XCTAssert(from.entityClass == NSClassFromString(request.entity!.managedObjectClassName))
- let affectedConfigurations = request.affectedStores!.map { $0.configurationName }
+ let affectedConfigurations = request.safeAffectedStores!.map { $0.configurationName }
XCTAssertEqual(affectedConfigurations, ["PF_DEFAULT_CONFIGURATION_NAME"])
}
do {
let from = From("Config1")
- let request = NSFetchRequest()
+ let request = CoreStoreFetchRequest()
let storesFound = self.expectLogger([.LogWarning]) {
from.applyToFetchRequest(request, context: dataStack.mainContext)
}
XCTAssertFalse(storesFound)
XCTAssertNotNil(request.entity)
- XCTAssertNotNil(request.affectedStores)
+ XCTAssertNotNil(request.safeAffectedStores)
XCTAssert(from.entityClass == NSClassFromString(request.entity!.managedObjectClassName))
- let affectedConfigurations = request.affectedStores!.map { $0.configurationName }
+ let affectedConfigurations = request.safeAffectedStores!.map { $0.configurationName }
XCTAssertTrue(affectedConfigurations.isEmpty)
}
}
@@ -115,102 +115,102 @@ final class FromTests: BaseTestCase {
let from = From()
- let request = NSFetchRequest()
+ let request = CoreStoreFetchRequest()
let storesFound = from.applyToFetchRequest(request, context: dataStack.mainContext)
XCTAssertTrue(storesFound)
XCTAssertNotNil(request.entity)
- XCTAssertNotNil(request.affectedStores)
+ XCTAssertNotNil(request.safeAffectedStores)
XCTAssert(from.entityClass == NSClassFromString(request.entity!.managedObjectClassName))
- let affectedConfigurations = request.affectedStores!.map { $0.configurationName }
+ let affectedConfigurations = request.safeAffectedStores!.map { $0.configurationName }
XCTAssertEqual(affectedConfigurations, ["Config1"])
}
do {
let from = From("Config1")
- let request = NSFetchRequest()
+ let request = CoreStoreFetchRequest()
let storesFound = from.applyToFetchRequest(request, context: dataStack.mainContext)
XCTAssertTrue(storesFound)
XCTAssertNotNil(request.entity)
- XCTAssertNotNil(request.affectedStores)
+ XCTAssertNotNil(request.safeAffectedStores)
XCTAssert(from.entityClass == NSClassFromString(request.entity!.managedObjectClassName))
- let affectedConfigurations = request.affectedStores!.map { $0.configurationName }
+ let affectedConfigurations = request.safeAffectedStores!.map { $0.configurationName }
XCTAssertEqual(affectedConfigurations, ["Config1"])
}
do {
let from = From("Config2")
- let request = NSFetchRequest()
+ let request = CoreStoreFetchRequest()
let storesFound = self.expectLogger([.LogWarning]) {
from.applyToFetchRequest(request, context: dataStack.mainContext)
}
XCTAssertFalse(storesFound)
XCTAssertNotNil(request.entity)
- XCTAssertNotNil(request.affectedStores)
+ XCTAssertNotNil(request.safeAffectedStores)
XCTAssert(from.entityClass == NSClassFromString(request.entity!.managedObjectClassName))
- let affectedConfigurations = request.affectedStores!.map { $0.configurationName }
+ let affectedConfigurations = request.safeAffectedStores!.map { $0.configurationName }
XCTAssertTrue(affectedConfigurations.isEmpty)
}
do {
let from = From()
- let request = NSFetchRequest()
+ let request = CoreStoreFetchRequest()
let storesFound = self.expectLogger([.LogWarning]) {
from.applyToFetchRequest(request, context: dataStack.mainContext)
}
XCTAssertFalse(storesFound)
XCTAssertNotNil(request.entity)
- XCTAssertNotNil(request.affectedStores)
+ XCTAssertNotNil(request.safeAffectedStores)
XCTAssert(from.entityClass == NSClassFromString(request.entity!.managedObjectClassName))
- let affectedConfigurations = request.affectedStores!.map { $0.configurationName }
+ let affectedConfigurations = request.safeAffectedStores!.map { $0.configurationName }
XCTAssertTrue(affectedConfigurations.isEmpty)
}
do {
let from = From("Config1")
- let request = NSFetchRequest()
+ let request = CoreStoreFetchRequest()
let storesFound = self.expectLogger([.LogWarning]) {
from.applyToFetchRequest(request, context: dataStack.mainContext)
}
XCTAssertFalse(storesFound)
XCTAssertNotNil(request.entity)
- XCTAssertNotNil(request.affectedStores)
+ XCTAssertNotNil(request.safeAffectedStores)
XCTAssert(from.entityClass == NSClassFromString(request.entity!.managedObjectClassName))
- let affectedConfigurations = request.affectedStores!.map { $0.configurationName }
+ let affectedConfigurations = request.safeAffectedStores!.map { $0.configurationName }
XCTAssertTrue(affectedConfigurations.isEmpty)
}
do {
let from = From("Config2")
- let request = NSFetchRequest()
+ let request = CoreStoreFetchRequest()
let storesFound = self.expectLogger([.LogWarning]) {
from.applyToFetchRequest(request, context: dataStack.mainContext)
}
XCTAssertFalse(storesFound)
XCTAssertNotNil(request.entity)
- XCTAssertNotNil(request.affectedStores)
+ XCTAssertNotNil(request.safeAffectedStores)
XCTAssert(from.entityClass == NSClassFromString(request.entity!.managedObjectClassName))
- let affectedConfigurations = request.affectedStores!.map { $0.configurationName }
+ let affectedConfigurations = request.safeAffectedStores!.map { $0.configurationName }
XCTAssertTrue(affectedConfigurations.isEmpty)
}
}
@@ -225,99 +225,99 @@ final class FromTests: BaseTestCase {
let from = From()
- let request = NSFetchRequest()
+ let request = CoreStoreFetchRequest()
let storesFound = from.applyToFetchRequest(request, context: dataStack.mainContext)
XCTAssertTrue(storesFound)
XCTAssertNotNil(request.entity)
- XCTAssertNotNil(request.affectedStores)
+ XCTAssertNotNil(request.safeAffectedStores)
XCTAssert(from.entityClass == NSClassFromString(request.entity!.managedObjectClassName))
- let affectedConfigurations = request.affectedStores!.map { $0.configurationName }
+ let affectedConfigurations = request.safeAffectedStores!.map { $0.configurationName }
XCTAssertEqual(Set(affectedConfigurations), ["PF_DEFAULT_CONFIGURATION_NAME", "Config1"] as Set)
}
do {
let from = From("Config1")
- let request = NSFetchRequest()
+ let request = CoreStoreFetchRequest()
let storesFound = from.applyToFetchRequest(request, context: dataStack.mainContext)
XCTAssertTrue(storesFound)
XCTAssertNotNil(request.entity)
- XCTAssertNotNil(request.affectedStores)
+ XCTAssertNotNil(request.safeAffectedStores)
XCTAssert(from.entityClass == NSClassFromString(request.entity!.managedObjectClassName))
- let affectedConfigurations = request.affectedStores!.map { $0.configurationName }
+ let affectedConfigurations = request.safeAffectedStores!.map { $0.configurationName }
XCTAssertEqual(affectedConfigurations, ["Config1"])
}
do {
let from = From("Config2")
- let request = NSFetchRequest()
+ let request = CoreStoreFetchRequest()
let storesFound = self.expectLogger([.LogWarning]) {
from.applyToFetchRequest(request, context: dataStack.mainContext)
}
XCTAssertFalse(storesFound)
XCTAssertNotNil(request.entity)
- XCTAssertNotNil(request.affectedStores)
+ XCTAssertNotNil(request.safeAffectedStores)
XCTAssert(from.entityClass == NSClassFromString(request.entity!.managedObjectClassName))
- let affectedConfigurations = request.affectedStores!.map { $0.configurationName }
+ let affectedConfigurations = request.safeAffectedStores!.map { $0.configurationName }
XCTAssertTrue(affectedConfigurations.isEmpty)
}
do {
let from = From()
- let request = NSFetchRequest()
+ let request = CoreStoreFetchRequest()
let storesFound = from.applyToFetchRequest(request, context: dataStack.mainContext)
XCTAssertTrue(storesFound)
XCTAssertNotNil(request.entity)
- XCTAssertNotNil(request.affectedStores)
+ XCTAssertNotNil(request.safeAffectedStores)
XCTAssert(from.entityClass == NSClassFromString(request.entity!.managedObjectClassName))
- let affectedConfigurations = request.affectedStores!.map { $0.configurationName }
+ let affectedConfigurations = request.safeAffectedStores!.map { $0.configurationName }
XCTAssertEqual(affectedConfigurations, ["PF_DEFAULT_CONFIGURATION_NAME"])
}
do {
let from = From("Config1")
- let request = NSFetchRequest()
+ let request = CoreStoreFetchRequest()
let storesFound = self.expectLogger([.LogWarning]) {
from.applyToFetchRequest(request, context: dataStack.mainContext)
}
XCTAssertFalse(storesFound)
XCTAssertNotNil(request.entity)
- XCTAssertNotNil(request.affectedStores)
+ XCTAssertNotNil(request.safeAffectedStores)
XCTAssert(from.entityClass == NSClassFromString(request.entity!.managedObjectClassName))
- let affectedConfigurations = request.affectedStores!.map { $0.configurationName }
+ let affectedConfigurations = request.safeAffectedStores!.map { $0.configurationName }
XCTAssertTrue(affectedConfigurations.isEmpty)
}
do {
let from = From("Config2")
- let request = NSFetchRequest()
+ let request = CoreStoreFetchRequest()
let storesFound = self.expectLogger([.LogWarning]) {
from.applyToFetchRequest(request, context: dataStack.mainContext)
}
XCTAssertFalse(storesFound)
XCTAssertNotNil(request.entity)
- XCTAssertNotNil(request.affectedStores)
+ XCTAssertNotNil(request.safeAffectedStores)
XCTAssert(from.entityClass == NSClassFromString(request.entity!.managedObjectClassName))
- let affectedConfigurations = request.affectedStores!.map { $0.configurationName }
+ let affectedConfigurations = request.safeAffectedStores!.map { $0.configurationName }
XCTAssertTrue(affectedConfigurations.isEmpty)
}
}
@@ -332,96 +332,96 @@ final class FromTests: BaseTestCase {
let from = From()
- let request = NSFetchRequest()
+ let request = CoreStoreFetchRequest()
let storesFound = from.applyToFetchRequest(request, context: dataStack.mainContext)
XCTAssertTrue(storesFound)
XCTAssertNotNil(request.entity)
- XCTAssertNotNil(request.affectedStores)
+ XCTAssertNotNil(request.safeAffectedStores)
XCTAssert(from.entityClass == NSClassFromString(request.entity!.managedObjectClassName))
- let affectedConfigurations = request.affectedStores!.map { $0.configurationName }
+ let affectedConfigurations = request.safeAffectedStores!.map { $0.configurationName }
XCTAssertEqual(affectedConfigurations, ["Config1"])
}
do {
let from = From("Config1")
- let request = NSFetchRequest()
+ let request = CoreStoreFetchRequest()
let storesFound = from.applyToFetchRequest(request, context: dataStack.mainContext)
XCTAssertTrue(storesFound)
XCTAssertNotNil(request.entity)
- XCTAssertNotNil(request.affectedStores)
+ XCTAssertNotNil(request.safeAffectedStores)
XCTAssert(from.entityClass == NSClassFromString(request.entity!.managedObjectClassName))
- let affectedConfigurations = request.affectedStores!.map { $0.configurationName }
+ let affectedConfigurations = request.safeAffectedStores!.map { $0.configurationName }
XCTAssertEqual(affectedConfigurations, ["Config1"])
}
do {
let from = From("Config2")
- let request = NSFetchRequest()
+ let request = CoreStoreFetchRequest()
let storesFound = self.expectLogger([.LogWarning]) {
from.applyToFetchRequest(request, context: dataStack.mainContext)
}
XCTAssertFalse(storesFound)
XCTAssertNotNil(request.entity)
- XCTAssertNotNil(request.affectedStores)
+ XCTAssertNotNil(request.safeAffectedStores)
XCTAssert(from.entityClass == NSClassFromString(request.entity!.managedObjectClassName))
- let affectedConfigurations = request.affectedStores!.map { $0.configurationName }
+ let affectedConfigurations = request.safeAffectedStores!.map { $0.configurationName }
XCTAssertTrue(affectedConfigurations.isEmpty)
}
do {
let from = From()
- let request = NSFetchRequest()
+ let request = CoreStoreFetchRequest()
let storesFound = from.applyToFetchRequest(request, context: dataStack.mainContext)
XCTAssertTrue(storesFound)
XCTAssertNotNil(request.entity)
- XCTAssertNotNil(request.affectedStores)
+ XCTAssertNotNil(request.safeAffectedStores)
XCTAssert(from.entityClass == NSClassFromString(request.entity!.managedObjectClassName))
- let affectedConfigurations = request.affectedStores!.map { $0.configurationName }
+ let affectedConfigurations = request.safeAffectedStores!.map { $0.configurationName }
XCTAssertEqual(affectedConfigurations, ["Config2"])
}
do {
let from = From("Config1")
- let request = NSFetchRequest()
+ let request = CoreStoreFetchRequest()
let storesFound = self.expectLogger([.LogWarning]) {
from.applyToFetchRequest(request, context: dataStack.mainContext)
}
XCTAssertFalse(storesFound)
XCTAssertNotNil(request.entity)
- XCTAssertNotNil(request.affectedStores)
+ XCTAssertNotNil(request.safeAffectedStores)
XCTAssert(from.entityClass == NSClassFromString(request.entity!.managedObjectClassName))
- let affectedConfigurations = request.affectedStores!.map { $0.configurationName }
+ let affectedConfigurations = request.safeAffectedStores!.map { $0.configurationName }
XCTAssertTrue(affectedConfigurations.isEmpty)
}
do {
let from = From("Config2")
- let request = NSFetchRequest()
+ let request = CoreStoreFetchRequest()
let storesFound = from.applyToFetchRequest(request, context: dataStack.mainContext)
XCTAssertTrue(storesFound)
XCTAssertNotNil(request.entity)
- XCTAssertNotNil(request.affectedStores)
+ XCTAssertNotNil(request.safeAffectedStores)
XCTAssert(from.entityClass == NSClassFromString(request.entity!.managedObjectClassName))
- let affectedConfigurations = request.affectedStores!.map { $0.configurationName }
+ let affectedConfigurations = request.safeAffectedStores!.map { $0.configurationName }
XCTAssertEqual(affectedConfigurations, ["Config2"])
}
}
diff --git a/CoreStoreTests/GroupByTests.swift b/CoreStoreTests/GroupByTests.swift
index 5ed3aa2..3bc8fd7 100644
--- a/CoreStoreTests/GroupByTests.swift
+++ b/CoreStoreTests/GroupByTests.swift
@@ -68,7 +68,7 @@ final class GroupByTests: BaseTestCase {
let groupBy = GroupBy("testString")
- let request = NSFetchRequest()
+ let request = CoreStoreFetchRequest()
_ = From(TestEntity1).applyToFetchRequest(request, context: dataStack.mainContext)
groupBy.applyToFetchRequest(request)
diff --git a/CoreStoreTests/OrderByTests.swift b/CoreStoreTests/OrderByTests.swift
index 483f508..2eea837 100644
--- a/CoreStoreTests/OrderByTests.swift
+++ b/CoreStoreTests/OrderByTests.swift
@@ -179,7 +179,7 @@ final class OrderByTests: XCTestCase {
dynamic func test_ThatOrderByClauses_ApplyToFetchRequestsCorrectly() {
let orderBy = OrderBy(.Ascending("key"))
- let request = NSFetchRequest()
+ let request = CoreStoreFetchRequest()
orderBy.applyToFetchRequest(request)
XCTAssertNotNil(request.sortDescriptors)
XCTAssertEqual(request.sortDescriptors ?? [], orderBy.sortDescriptors)
diff --git a/CoreStoreTests/TweakTests.swift b/CoreStoreTests/TweakTests.swift
index 18416d4..d8f1aae 100644
--- a/CoreStoreTests/TweakTests.swift
+++ b/CoreStoreTests/TweakTests.swift
@@ -43,7 +43,7 @@ final class TweakTests: XCTestCase {
$0.fetchLimit = 200
$0.predicate = predicate
}
- let request = NSFetchRequest()
+ let request = CoreStoreFetchRequest()
tweak.applyToFetchRequest(request)
XCTAssertEqual(request.fetchOffset, 100)
XCTAssertEqual(request.fetchLimit, 200)
diff --git a/CoreStoreTests/WhereTests.swift b/CoreStoreTests/WhereTests.swift
index 053e657..24044e5 100644
--- a/CoreStoreTests/WhereTests.swift
+++ b/CoreStoreTests/WhereTests.swift
@@ -142,7 +142,7 @@ final class WhereTests: XCTestCase {
dynamic func test_ThatWhereClauses_ApplyToFetchRequestsCorrectly() {
let whereClause = Where("key", isEqualTo: "value")
- let request = NSFetchRequest()
+ let request = CoreStoreFetchRequest()
whereClause.applyToFetchRequest(request)
XCTAssertNotNil(request.predicate)
XCTAssertEqual(request.predicate, whereClause.predicate)
diff --git a/Sources/ObjectiveC/CoreStoreBridge.h b/Sources/ObjectiveC/CoreStoreBridge.h
index 7809fd1..e685223 100644
--- a/Sources/ObjectiveC/CoreStoreBridge.h
+++ b/Sources/ObjectiveC/CoreStoreBridge.h
@@ -576,6 +576,9 @@ CSWhere *_Nonnull CSWherePredicate(NSPredicate *_Nonnull predicate) CORESTORE_RE
// http://stackoverflow.com/questions/14396375/nsfetchedresultscontroller-crashes-in-ios-6-if-affectedstores-is-specified
NS_SWIFT_NAME(CoreStoreFetchRequest)
@interface _CSFetchRequest: NSFetchRequest
+
+@property (nullable, nonatomic, copy, readonly) NSArray *safeAffectedStores;
+
@end
diff --git a/Sources/ObjectiveC/CoreStoreBridge.m b/Sources/ObjectiveC/CoreStoreBridge.m
index 2a7039d..2ded9b0 100644
--- a/Sources/ObjectiveC/CoreStoreBridge.m
+++ b/Sources/ObjectiveC/CoreStoreBridge.m
@@ -223,16 +223,35 @@ CSWhere *_Nonnull CSWherePredicate(NSPredicate *_Nonnull predicate) CORESTORE_RE
#pragma mark CoreStoreFetchRequest
@interface _CSFetchRequest ()
+
+@property (nullable, nonatomic, copy) NSArray *safeAffectedStores;
+@property (nullable, nonatomic, assign) CFArrayRef releaseArray;
+
@end
@implementation _CSFetchRequest
-- (NSArray *)affectedStores {
+// MARK: NSFetchRequest
+
+- (void)setAffectedStores:(NSArray *_Nullable)affectedStores {
// Bugfix for NSFetchRequest messing up memory management for `affectedStores`
// http://stackoverflow.com/questions/14396375/nsfetchedresultscontroller-crashes-in-ios-6-if-affectedstores-is-specified
- CFBridgingRetain([super affectedStores]);
- return [super affectedStores];
+
+ if (NSFoundationVersionNumber < NSFoundationVersionNumber10_0) {
+
+ self.safeAffectedStores = affectedStores;
+ [super setAffectedStores:affectedStores];
+ return;
+ }
+ if (self.releaseArray != NULL) {
+
+ CFRelease(self.releaseArray);
+ self.releaseArray = NULL;
+ }
+ self.safeAffectedStores = affectedStores;
+ [super setAffectedStores:affectedStores];
+ self.releaseArray = CFBridgingRetain([super affectedStores]);
}
@end
diff --git a/Sources/Observing/ListMonitor.swift b/Sources/Observing/ListMonitor.swift
index e4742ad..24cc7fd 100644
--- a/Sources/Observing/ListMonitor.swift
+++ b/Sources/Observing/ListMonitor.swift
@@ -1123,7 +1123,7 @@ public final class ListMonitor: Hashable {
self.isPersistentStoreChanging = true
guard let removedStores = (note.userInfo?[NSRemovedPersistentStoresKey] as? [NSPersistentStore]).flatMap(Set.init)
- where !Set(self.fetchedResultsController.fetchRequest.affectedStores ?? []).intersect(removedStores).isEmpty else {
+ where !Set((self.fetchedResultsController.fetchRequest as! CoreStoreFetchRequest).safeAffectedStores ?? []).intersect(removedStores).isEmpty else {
return
}
@@ -1144,7 +1144,7 @@ public final class ListMonitor: Hashable {
if !self.isPendingRefetch {
- let previousStores = Set(self.fetchedResultsController.fetchRequest.affectedStores ?? [])
+ let previousStores = Set((self.fetchedResultsController.fetchRequest as! CoreStoreFetchRequest).safeAffectedStores ?? [])
let currentStores = previousStores
.subtract(note.userInfo?[NSRemovedPersistentStoresKey] as? [NSPersistentStore] ?? [])
.union(note.userInfo?[NSAddedPersistentStoresKey] as? [NSPersistentStore] ?? [])