From a638620858b80ffc49cf5ac47de38a241089b8fe Mon Sep 17 00:00:00 2001 From: John Rommel Estropia Date: Thu, 21 Jul 2016 02:45:42 +0900 Subject: [PATCH] WIP --- CoreStore.xcodeproj/project.pbxproj | 14 +- ...etchingAndQueryingDemoViewController.swift | 16 +- .../ListObserverDemoViewController.swift | 2 +- .../ObjectObserverDemoViewController.swift | 4 +- .../MigrationsDemoViewController.swift | 4 +- CoreStoreTests/BaseTests/BaseTestCase.swift | 21 +- .../BaseTests/BaseTestDataTestCase.swift | 16 +- CoreStoreTests/ErrorTests.swift | 42 +- CoreStoreTests/FetchTests.swift | 536 +++++++++--------- CoreStoreTests/FromTests.swift | 60 +- CoreStoreTests/GroupByTests.swift | 4 +- CoreStoreTests/ImportTests.swift | 434 +++++++------- CoreStoreTests/IntoTests.swift | 8 +- CoreStoreTests/ListObserverTests.swift | 200 +++---- CoreStoreTests/ObjectObserverTests.swift | 42 +- CoreStoreTests/OrderByTests.swift | 60 +- CoreStoreTests/QueryTests.swift | 230 ++++---- CoreStoreTests/SelectTests.swift | 300 +++++----- CoreStoreTests/SetupTests.swift | 16 +- CoreStoreTests/StorageInterfaceTests.swift | 18 +- CoreStoreTests/TransactionTests.swift | 356 ++++++------ CoreStoreTests/TweakTests.swift | 2 +- CoreStoreTests/WhereTests.swift | 12 +- README.md | 130 ++--- .../NSManagedObject+Convenience.swift | 1 - Sources/CoreStoreError.swift | 4 +- .../BaseDataTransaction+Querying.swift | 20 +- .../Concrete Clauses/From.swift | 9 +- .../Concrete Clauses/GroupBy.swift | 1 - .../Concrete Clauses/OrderBy.swift | 5 +- .../Concrete Clauses/Select.swift | 90 ++- .../Concrete Clauses/Tweak.swift | 2 +- .../Concrete Clauses/Where.swift | 7 +- .../CoreStore+Querying.swift | 18 - .../DataStack+Querying.swift | 18 - .../BaseDataTransaction+Importing.swift | 28 +- Sources/Importing/ImportableObject.swift | 2 +- .../Importing/ImportableUniqueObject.swift | 2 +- .../CoreStoreFetchedResultsController.swift | 2 +- .../FetchedResultsControllerDelegate.swift | 2 +- Sources/Internal/Functions.swift | 63 +- Sources/Internal/MigrationManager.swift | 2 +- .../Internal/NSFetchRequest+CoreStore.swift | 20 - .../NSManagedObjectContext+CoreStore.swift | 14 +- .../NSManagedObjectContext+Querying.swift | 4 +- .../NSManagedObjectContext+Setup.swift | 20 +- .../Internal/NSManagedObjectModel+Setup.swift | 4 +- Sources/Internal/NotificationObserver.swift | 8 +- ...reStore+CustomDebugStringConvertible.swift | 2 +- Sources/Logging/CoreStoreLogger.swift | 2 +- Sources/Logging/DefaultLogger.swift | 4 - Sources/Migrating/CoreStore+Migration.swift | 33 +- Sources/Migrating/DataStack+Migration.swift | 48 +- Sources/Migrating/MigrationResult.swift | 9 +- Sources/Migrating/MigrationType.swift | 1 - Sources/Migrating/SetupResult.swift | 13 +- .../CSAsynchronousDataTransaction.swift | 2 - .../ObjectiveC/CSBaseDataTransaction.swift | 14 - Sources/ObjectiveC/CSCoreStore+Setup.swift | 4 + .../ObjectiveC/CSDataStack+Observing.swift | 16 +- Sources/ObjectiveC/CSDataStack.swift | 4 + Sources/ObjectiveC/CSError.swift | 6 +- Sources/ObjectiveC/CSListMonitor.swift | 4 +- .../CSSynchronousDataTransaction.swift | 2 - Sources/ObjectiveC/CoreStoreBridge.swift | 16 +- Sources/Observing/CoreStore+Observing.swift | 5 - Sources/Observing/DataStack+Observing.swift | 5 - Sources/Observing/ListMonitor.swift | 153 ++--- Sources/Observing/ListObserver.swift | 12 +- Sources/Observing/ObjectMonitor.swift | 39 +- Sources/Observing/SectionBy.swift | 4 +- .../UnsafeDataTransaction+Observing.swift | 5 - Sources/Setup/CoreStore+Setup.swift | 4 + Sources/Setup/DataStack.swift | 13 +- .../Setup/StorageInterfaces/ICloudStore.swift | 81 +-- .../StorageInterfaces/LegacySQLiteStore.swift | 4 +- .../Setup/StorageInterfaces/SQLiteStore.swift | 4 +- .../AsynchronousDataTransaction.swift | 6 +- .../Transactions/BaseDataTransaction.swift | 22 +- .../Transactions/CoreStore+Transaction.swift | 1 - .../Transactions/DataStack+Transaction.swift | 1 - Sources/Transactions/Into.swift | 12 +- Sources/Transactions/SaveResult.swift | 9 +- .../SynchronousDataTransaction.swift | 6 +- .../Transactions/UnsafeDataTransaction.swift | 1 - 85 files changed, 1621 insertions(+), 1819 deletions(-) delete mode 100644 Sources/Internal/NSFetchRequest+CoreStore.swift diff --git a/CoreStore.xcodeproj/project.pbxproj b/CoreStore.xcodeproj/project.pbxproj index 87598e2..067b58c 100644 --- a/CoreStore.xcodeproj/project.pbxproj +++ b/CoreStore.xcodeproj/project.pbxproj @@ -80,10 +80,6 @@ B50392FA1C47963F009900CA /* NSManagedObject+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B50392F81C478FF3009900CA /* NSManagedObject+Transaction.swift */; }; B50392FB1C479640009900CA /* NSManagedObject+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B50392F81C478FF3009900CA /* NSManagedObject+Transaction.swift */; }; B504D0D61B02362500B2BBB1 /* CoreStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B504D0D51B02362500B2BBB1 /* CoreStore+Setup.swift */; }; - B517A9811D3EE31C006C3791 /* NSFetchRequest+CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B517A9801D3EE31C006C3791 /* NSFetchRequest+CoreStore.swift */; }; - B517A9821D3EE31C006C3791 /* NSFetchRequest+CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B517A9801D3EE31C006C3791 /* NSFetchRequest+CoreStore.swift */; }; - B517A9831D3EE31C006C3791 /* NSFetchRequest+CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B517A9801D3EE31C006C3791 /* NSFetchRequest+CoreStore.swift */; }; - B517A9841D3EE31C006C3791 /* NSFetchRequest+CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B517A9801D3EE31C006C3791 /* NSFetchRequest+CoreStore.swift */; }; 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 */; }; B51FE5AD1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51FE5AA1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift */; }; @@ -589,7 +585,6 @@ B501FDE61CA8D20500BE22EF /* CSListObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSListObserver.swift; sourceTree = ""; }; B50392F81C478FF3009900CA /* NSManagedObject+Transaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSManagedObject+Transaction.swift"; sourceTree = ""; }; B504D0D51B02362500B2BBB1 /* CoreStore+Setup.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CoreStore+Setup.swift"; sourceTree = ""; }; - B517A9801D3EE31C006C3791 /* NSFetchRequest+CoreStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSFetchRequest+CoreStore.swift"; sourceTree = ""; }; B519E4571C4CD2CA00E7B469 /* GCDKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GCDKit.framework; path = "../../Library/Developer/Xcode/DerivedData/Build/Products/Debug-iphoneos/GCDKit.framework"; sourceTree = ""; }; B51BE0691B47FC4B0069F532 /* NSManagedObjectModel+Setup.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSManagedObjectModel+Setup.swift"; sourceTree = ""; }; B51FE5AA1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CoreStore+CustomDebugStringConvertible.swift"; sourceTree = ""; }; @@ -652,7 +647,7 @@ B565079F1D3930F5000596DA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; B56507A11D393101000596DA /* GCDKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GCDKit.framework; path = Carthage/Checkouts/GCDKit/build/Debug/GCDKit.framework; sourceTree = ""; }; B5677D3C1CD3B1E400322BFC /* ICloudStoreObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ICloudStoreObserver.swift; sourceTree = ""; }; - B56964D31B22FFAD0075EE4A /* DataStack+Migration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DataStack+Migration.swift"; sourceTree = ""; }; + B56964D31B22FFAD0075EE4A /* DataStack+Migration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = "DataStack+Migration.swift"; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; B56965231B356B820075EE4A /* MigrationResult.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MigrationResult.swift; sourceTree = ""; }; B57D27BD1D0BBE8200539C58 /* BaseTestDataTestCase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseTestDataTestCase.swift; sourceTree = ""; }; B57D27C11D0BC20100539C58 /* QueryTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QueryTests.swift; sourceTree = ""; }; @@ -741,7 +736,7 @@ B5F1DA8F1B9AA991007C5CBB /* ImportableUniqueObject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImportableUniqueObject.swift; sourceTree = ""; }; B5FAD6A81B50A4B300714891 /* NSProgress+Convenience.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSProgress+Convenience.swift"; sourceTree = ""; }; B5FAD6AB1B51285300714891 /* MigrationManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MigrationManager.swift; sourceTree = ""; }; - B5FAD6AD1B518DCB00714891 /* CoreStore+Migration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CoreStore+Migration.swift"; sourceTree = ""; }; + B5FAD6AD1B518DCB00714891 /* CoreStore+Migration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = "CoreStore+Migration.swift"; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; B5FE4DA11C8481E100FA6A91 /* StorageInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StorageInterface.swift; sourceTree = ""; }; B5FE4DA61C84FB4400FA6A91 /* InMemoryStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InMemoryStore.swift; sourceTree = ""; }; B5FE4DAB1C85D44E00FA6A91 /* SQLiteStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SQLiteStore.swift; sourceTree = ""; }; @@ -1204,7 +1199,6 @@ B5E834BA1B7691F3001D3D50 /* Functions.swift */, B5FAD6AB1B51285300714891 /* MigrationManager.swift */, B5E84F2B1AFF849C0064E85B /* NotificationObserver.swift */, - B517A9801D3EE31C006C3791 /* NSFetchRequest+CoreStore.swift */, B5E84F2C1AFF849C0064E85B /* NSManagedObjectContext+CoreStore.swift */, B5E84F351AFF85470064E85B /* NSManagedObjectContext+Querying.swift */, B5E84F321AFF85470064E85B /* NSManagedObjectContext+Setup.swift */, @@ -1599,7 +1593,6 @@ B5E84EF61AFF846E0064E85B /* DataStack+Transaction.swift in Sources */, B5FEC18E1C9166E200532541 /* NSPersistentStore+Setup.swift in Sources */, B5E1B5A21CAA4365007FD580 /* CSCoreStore+Observing.swift in Sources */, - B517A9811D3EE31C006C3791 /* NSFetchRequest+CoreStore.swift in Sources */, B5E84EDF1AFF84500064E85B /* DataStack.swift in Sources */, B59AFF411C6593E400C0ABE2 /* NSPersistentStoreCoordinator+Setup.swift in Sources */, B5E834BB1B7691F3001D3D50 /* Functions.swift in Sources */, @@ -1748,7 +1741,6 @@ B59851491C90289D00C99590 /* NSPersistentStoreCoordinator+Setup.swift in Sources */, B5E1B5A41CAA4365007FD580 /* CSCoreStore+Observing.swift in Sources */, B5FEC18F1C9166E600532541 /* NSPersistentStore+Setup.swift in Sources */, - B517A9821D3EE31C006C3791 /* NSFetchRequest+CoreStore.swift in Sources */, 82BA18B71C4BBD3F00A0916E /* CoreStore+Querying.swift in Sources */, 82BA18AA1C4BBD3100A0916E /* BaseDataTransaction.swift in Sources */, 82BA18A91C4BBD3100A0916E /* Into.swift in Sources */, @@ -1897,7 +1889,6 @@ B52DD19C1BE1F92C00949AFE /* Into.swift in Sources */, B5FE4DA51C8481E100FA6A91 /* StorageInterface.swift in Sources */, B529C2081CA4A2DC007E7EBD /* CSSaveResult.swift in Sources */, - B517A9841D3EE31C006C3791 /* NSFetchRequest+CoreStore.swift in Sources */, B5FE4DAA1C84FB4400FA6A91 /* InMemoryStore.swift in Sources */, B52DD1AF1BE1F93900949AFE /* GroupBy.swift in Sources */, B52DD1B01BE1F93900949AFE /* Tweak.swift in Sources */, @@ -2046,7 +2037,6 @@ B56321A11BD65216006C9394 /* ListMonitor.swift in Sources */, B5E1B5A51CAA4365007FD580 /* CSCoreStore+Observing.swift in Sources */, B56321881BD65216006C9394 /* BaseDataTransaction.swift in Sources */, - B517A9831D3EE31C006C3791 /* NSFetchRequest+CoreStore.swift in Sources */, B56321A31BD65216006C9394 /* DataStack+Migration.swift in Sources */, B56321901BD65216006C9394 /* ImportableUniqueObject.swift in Sources */, B56321871BD65216006C9394 /* Into.swift in Sources */, diff --git a/CoreStoreDemo/CoreStoreDemo/Fetching and Querying Demo/FetchingAndQueryingDemoViewController.swift b/CoreStoreDemo/CoreStoreDemo/Fetching and Querying Demo/FetchingAndQueryingDemoViewController.swift index 68a1189..8392895 100644 --- a/CoreStoreDemo/CoreStoreDemo/Fetching and Querying Demo/FetchingAndQueryingDemoViewController.swift +++ b/CoreStoreDemo/CoreStoreDemo/Fetching and Querying Demo/FetchingAndQueryingDemoViewController.swift @@ -168,7 +168,7 @@ class FetchingAndQueryingDemoViewController: UIViewController, UITableViewDataSo return Static.timeZonesStack.fetchAll( From(TimeZone), - OrderBy(.Ascending("name")) + OrderBy(.ascending("name")) )! } ), @@ -179,7 +179,7 @@ class FetchingAndQueryingDemoViewController: UIViewController, UITableViewDataSo return Static.timeZonesStack.fetchAll( From(TimeZone), Where("%K BEGINSWITH[c] %@", "name", "Asia"), - OrderBy(.Ascending("secondsFromGMT")) + OrderBy(.ascending("secondsFromGMT")) )! } ), @@ -191,7 +191,7 @@ class FetchingAndQueryingDemoViewController: UIViewController, UITableViewDataSo From(TimeZone), Where("%K BEGINSWITH[c] %@", "name", "America") || Where("%K BEGINSWITH[c] %@", "name", "Europe"), - OrderBy(.Ascending("secondsFromGMT")) + OrderBy(.ascending("secondsFromGMT")) )! } ), @@ -202,7 +202,7 @@ class FetchingAndQueryingDemoViewController: UIViewController, UITableViewDataSo return Static.timeZonesStack.fetchAll( From(TimeZone), !Where("%K BEGINSWITH[c] %@", "name", "America"), - OrderBy(.Ascending("secondsFromGMT")) + OrderBy(.ascending("secondsFromGMT")) )! } ), @@ -213,7 +213,7 @@ class FetchingAndQueryingDemoViewController: UIViewController, UITableViewDataSo return Static.timeZonesStack.fetchAll( From(TimeZone), Where("hasDaylightSavingTime", isEqualTo: true), - OrderBy(.Ascending("name")) + OrderBy(.ascending("name")) )! } ) @@ -248,7 +248,7 @@ class FetchingAndQueryingDemoViewController: UIViewController, UITableViewDataSo return Static.timeZonesStack.queryAttributes( From(TimeZone), Select("name", "abbreviation"), - OrderBy(.Ascending("name")) + OrderBy(.ascending("name")) )! } ), @@ -260,7 +260,7 @@ class FetchingAndQueryingDemoViewController: UIViewController, UITableViewDataSo From(TimeZone), Select(.Count("abbreviation"), "abbreviation"), GroupBy("abbreviation"), - OrderBy(.Ascending("secondsFromGMT"), .Ascending("name")) + OrderBy(.ascending("secondsFromGMT"), .ascending("name")) )! } ), @@ -275,7 +275,7 @@ class FetchingAndQueryingDemoViewController: UIViewController, UITableViewDataSo "hasDaylightSavingTime" ), GroupBy("hasDaylightSavingTime"), - OrderBy(.Descending("hasDaylightSavingTime")) + OrderBy(.descending("hasDaylightSavingTime")) )! } ) diff --git a/CoreStoreDemo/CoreStoreDemo/List and Object Observers Demo/ListObserverDemoViewController.swift b/CoreStoreDemo/CoreStoreDemo/List and Object Observers Demo/ListObserverDemoViewController.swift index 5febaa7..15462cc 100644 --- a/CoreStoreDemo/CoreStoreDemo/List and Object Observers Demo/ListObserverDemoViewController.swift +++ b/CoreStoreDemo/CoreStoreDemo/List and Object Observers Demo/ListObserverDemoViewController.swift @@ -60,7 +60,7 @@ private struct Static { return CoreStore.monitorSectionedList( From(Palette), SectionBy("colorName"), - OrderBy(.Ascending("hue")) + OrderBy(.ascending("hue")) ) }() } diff --git a/CoreStoreDemo/CoreStoreDemo/List and Object Observers Demo/ObjectObserverDemoViewController.swift b/CoreStoreDemo/CoreStoreDemo/List and Object Observers Demo/ObjectObserverDemoViewController.swift index 09145ec..03d100c 100644 --- a/CoreStoreDemo/CoreStoreDemo/List and Object Observers Demo/ObjectObserverDemoViewController.swift +++ b/CoreStoreDemo/CoreStoreDemo/List and Object Observers Demo/ObjectObserverDemoViewController.swift @@ -50,7 +50,7 @@ class ObjectObserverDemoViewController: UIViewController, ObjectObserver { required init?(coder aDecoder: NSCoder) { - if let palette = CoreStore.fetchOne(From(Palette), OrderBy(.Ascending("hue"))) { + if let palette = CoreStore.fetchOne(From(Palette), OrderBy(.ascending("hue"))) { self.monitor = CoreStore.monitorObject(palette) } @@ -64,7 +64,7 @@ class ObjectObserverDemoViewController: UIViewController, ObjectObserver { transaction.commitAndWait() } - let palette = CoreStore.fetchOne(From(Palette), OrderBy(.Ascending("hue")))! + let palette = CoreStore.fetchOne(From(Palette), OrderBy(.ascending("hue")))! self.monitor = CoreStore.monitorObject(palette) } diff --git a/CoreStoreDemo/CoreStoreDemo/MIgrations Demo/MigrationsDemoViewController.swift b/CoreStoreDemo/CoreStoreDemo/MIgrations Demo/MigrationsDemoViewController.swift index c5a42be..7e7fe56 100644 --- a/CoreStoreDemo/CoreStoreDemo/MIgrations Demo/MigrationsDemoViewController.swift +++ b/CoreStoreDemo/CoreStoreDemo/MIgrations Demo/MigrationsDemoViewController.swift @@ -166,7 +166,7 @@ class MigrationsDemoViewController: UIViewController { return } - guard case .Success = result else { + guard case .success = result else { self.setEnabled(true) return @@ -250,7 +250,7 @@ class MigrationsDemoViewController: UIViewController { self.segmentedControl?.selectedSegmentIndex = self.models.map { $0.version }.indexOf(model.version)! self._dataStack = dataStack - let listMonitor = dataStack.monitorList(From(model.entityType), OrderBy(.Descending("dna"))) + let listMonitor = dataStack.monitorList(From(model.entityType), OrderBy(.descending("dna"))) listMonitor.addObserver(self) self._listMonitor = listMonitor diff --git a/CoreStoreTests/BaseTests/BaseTestCase.swift b/CoreStoreTests/BaseTests/BaseTestCase.swift index 8ab24ec..81576af 100644 --- a/CoreStoreTests/BaseTests/BaseTestCase.swift +++ b/CoreStoreTests/BaseTests/BaseTestCase.swift @@ -36,11 +36,12 @@ class BaseTestCase: XCTestCase { // MARK: Internal @nonobjc - func prepareStack(_ configurations: [String?] = [nil], @noescape _ closure: (dataStack: DataStack) -> T) -> T { + @discardableResult + func prepareStack(configurations: [String?] = [nil], _ closure: @noescape (dataStack: DataStack) -> T) -> T { let stack = DataStack( modelName: "Model", - bundle: Bundle(forClass: self.dynamicType) + bundle: Bundle(for: self.dynamicType) ) do { @@ -48,9 +49,9 @@ class BaseTestCase: XCTestCase { try stack.addStorageAndWait( SQLiteStore( - fileURL: SQLiteStore.defaultRootDirectory - .URLByAppendingPathComponent(UUID().UUIDString) - .URLByAppendingPathComponent("\(self.dynamicType)_\(($0 ?? "-null-")).sqlite"), + fileURL: try SQLiteStore.defaultRootDirectory + .appendingPathComponent(UUID().uuidString) + .appendingPathComponent("\(self.dynamicType)_\(($0 ?? "-null-")).sqlite"), configuration: $0, localStorageOptions: .recreateStoreOnModelMismatch ) @@ -65,7 +66,7 @@ class BaseTestCase: XCTestCase { } @nonobjc - func expectLogger(_ expectations: [TestLogger.Expectation], @noescape closure: () -> T) -> T { + func expectLogger(_ expectations: [TestLogger.Expectation], closure: @noescape () -> T) -> T { CoreStore.logger = TestLogger(self.prepareLoggerExpectations(expectations)) defer { @@ -126,7 +127,7 @@ class BaseTestCase: XCTestCase { private func deleteStores() { - _ = try? FileManager.defaultManager().removeItemAtURL(SQLiteStore.defaultRootDirectory) + _ = try? FileManager.default.removeItem(at: SQLiteStore.defaultRootDirectory) } } @@ -152,7 +153,7 @@ class TestLogger: CoreStoreLogger { // MARK: CoreStoreLogger - func log(_ level: LogLevel, message: String, fileName: StaticString, lineNumber: Int, functionName: StaticString) { + func log(level: LogLevel, message: String, fileName: StaticString, lineNumber: Int, functionName: StaticString) { switch level { @@ -162,12 +163,12 @@ class TestLogger: CoreStoreLogger { } } - func log(_ error: CoreStoreError, message: String, fileName: StaticString, lineNumber: Int, functionName: StaticString) { + func log(error: CoreStoreError, message: String, fileName: StaticString, lineNumber: Int, functionName: StaticString) { self.fulfill(.logError) } - func assert(@autoclosure _ condition: () -> Bool, @autoclosure message: () -> String, fileName: StaticString, lineNumber: Int, functionName: StaticString) { + func assert(_ condition: @autoclosure () -> Bool, message: @autoclosure () -> String, fileName: StaticString, lineNumber: Int, functionName: StaticString) { if condition() { diff --git a/CoreStoreTests/BaseTests/BaseTestDataTestCase.swift b/CoreStoreTests/BaseTests/BaseTestDataTestCase.swift index 0a363c5..6963c64 100644 --- a/CoreStoreTests/BaseTests/BaseTestDataTestCase.swift +++ b/CoreStoreTests/BaseTests/BaseTestDataTestCase.swift @@ -30,9 +30,9 @@ class BaseTestDataTestCase: BaseTestCase { @nonobjc func prepareTestDataForStack(_ stack: DataStack, configurations: [String?] = [nil]) { - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in - for (configurationIndex, configuration) in configurations.enumerate() { + for (configurationIndex, configuration) in configurations.enumerated() { let configurationOrdinal = configurationIndex + 1 if configuration == nil || configuration == "Config1" { @@ -40,16 +40,16 @@ class BaseTestDataTestCase: BaseTestCase { for idIndex in 1 ... 5 { let object = transaction.create(Into(configuration)) - object.testEntityID = NSNumber(integer: (configurationOrdinal * 100) + idIndex) + object.testEntityID = NSNumber(value: (configurationOrdinal * 100) + idIndex) object.testNumber = idIndex - object.testDate = self.dateFormatter.dateFromString("2000-\(configurationOrdinal)-\(idIndex)T00:00:00Z") + object.testDate = self.dateFormatter.date(from: "2000-\(configurationOrdinal)-\(idIndex)T00:00:00Z") object.testBoolean = (idIndex % 2) == 1 object.testDecimal = NSDecimalNumber(string: "\(idIndex)") let string = "\(configuration ?? "nil"):TestEntity1:\(idIndex)" object.testString = string - object.testData = (string as NSString).dataUsingEncoding(NSUTF8StringEncoding) + object.testData = (string as NSString).data(using: String.Encoding.utf8.rawValue) } } if configuration == nil || configuration == "Config2" { @@ -57,16 +57,16 @@ class BaseTestDataTestCase: BaseTestCase { for idIndex in 1 ... 5 { let object = transaction.create(Into(configuration)) - object.testEntityID = NSNumber(integer: (configurationOrdinal * 200) + idIndex) + object.testEntityID = NSNumber(value: (configurationOrdinal * 200) + idIndex) object.testNumber = idIndex - object.testDate = self.dateFormatter.dateFromString("2000-\(configurationOrdinal)-\(idIndex)T00:00:00Z") + object.testDate = self.dateFormatter.date(from: "2000-\(configurationOrdinal)-\(idIndex)T00:00:00Z") object.testBoolean = (idIndex % 2) == 1 object.testDecimal = NSDecimalNumber(string: "\(idIndex)") let string = "\(configuration ?? "nil"):TestEntity2:\(idIndex)" object.testString = string - object.testData = (string as NSString).dataUsingEncoding(NSUTF8StringEncoding) + object.testData = (string as NSString).data(using: String.Encoding.utf8.rawValue) } } } diff --git a/CoreStoreTests/ErrorTests.swift b/CoreStoreTests/ErrorTests.swift index 4ad1003..4c526b2 100644 --- a/CoreStoreTests/ErrorTests.swift +++ b/CoreStoreTests/ErrorTests.swift @@ -36,22 +36,22 @@ final class ErrorTests: XCTestCase { @objc dynamic func test_ThatUnknownErrors_BridgeCorrectly() { - let error = CoreStoreError.Unknown + let error = CoreStoreError.unknown XCTAssertEqual((error as NSError).domain, CoreStoreErrorDomain) - XCTAssertEqual((error as NSError).code, CoreStoreErrorCode.UnknownError.rawValue) + XCTAssertEqual((error as NSError).code, CoreStoreErrorCode.unknownError.rawValue) let userInfo: NSDictionary = [:] let objcError = error.bridgeToObjectiveC XCTAssertEqual(error, objcError.bridgeToSwift) XCTAssertEqual(objcError.domain, CoreStoreErrorDomain) - XCTAssertEqual(objcError.code, CoreStoreErrorCode.UnknownError.rawValue) + XCTAssertEqual(objcError.code, CoreStoreErrorCode.unknownError.rawValue) XCTAssertEqual(objcError.userInfo, userInfo) let objcError2 = objcError.bridgeToSwift.bridgeToObjectiveC XCTAssertEqual(error, objcError2.bridgeToSwift) XCTAssertEqual(objcError2.domain, CoreStoreErrorDomain) - XCTAssertEqual(objcError2.code, CoreStoreErrorCode.UnknownError.rawValue) + XCTAssertEqual(objcError2.code, CoreStoreErrorCode.unknownError.rawValue) XCTAssertEqual(objcError2.userInfo, userInfo) } @@ -60,9 +60,9 @@ final class ErrorTests: XCTestCase { let dummyURL = URL(string: "file:///test1/test2.sqlite")! - let error = CoreStoreError.DifferentStorageExistsAtURL(existingPersistentStoreURL: dummyURL) + let error = CoreStoreError.differentStorageExistsAtURL(existingPersistentStoreURL: dummyURL) XCTAssertEqual((error as NSError).domain, CoreStoreErrorDomain) - XCTAssertEqual((error as NSError).code, CoreStoreErrorCode.DifferentPersistentStoreExistsAtURL.rawValue) + XCTAssertEqual((error as NSError).code, CoreStoreErrorCode.differentStorageExistsAtURL.rawValue) let userInfo: NSDictionary = [ "existingPersistentStoreURL": dummyURL @@ -70,13 +70,13 @@ final class ErrorTests: XCTestCase { let objcError = error.bridgeToObjectiveC XCTAssertEqual(error, objcError.bridgeToSwift) XCTAssertEqual(objcError.domain, CoreStoreErrorDomain) - XCTAssertEqual(objcError.code, CoreStoreErrorCode.DifferentPersistentStoreExistsAtURL.rawValue) + XCTAssertEqual(objcError.code, CoreStoreErrorCode.differentStorageExistsAtURL.rawValue) XCTAssertEqual(objcError.userInfo, userInfo) let objcError2 = objcError.bridgeToSwift.bridgeToObjectiveC XCTAssertEqual(error, objcError2.bridgeToSwift) XCTAssertEqual(objcError2.domain, CoreStoreErrorDomain) - XCTAssertEqual(objcError2.code, CoreStoreErrorCode.DifferentPersistentStoreExistsAtURL.rawValue) + XCTAssertEqual(objcError2.code, CoreStoreErrorCode.differentStorageExistsAtURL.rawValue) XCTAssertEqual(objcError2.userInfo, userInfo) } @@ -85,12 +85,12 @@ final class ErrorTests: XCTestCase { let dummyURL = URL(string: "file:///test1/test2.sqlite")! - let model = NSManagedObjectModel.fromBundle(Bundle(forClass: self.dynamicType), modelName: "Model") + let model = NSManagedObjectModel.fromBundle(Bundle(for: self.dynamicType), modelName: "Model") let version = "1.0.0" - let error = CoreStoreError.MappingModelNotFound(localStoreURL: dummyURL, targetModel: model, targetModelVersion: version) + let error = CoreStoreError.mappingModelNotFound(localStoreURL: dummyURL, targetModel: model, targetModelVersion: version) XCTAssertEqual((error as NSError).domain, CoreStoreErrorDomain) - XCTAssertEqual((error as NSError).code, CoreStoreErrorCode.MappingModelNotFound.rawValue) + XCTAssertEqual((error as NSError).code, CoreStoreErrorCode.mappingModelNotFound.rawValue) let userInfo: NSDictionary = [ "localStoreURL": dummyURL, @@ -100,13 +100,13 @@ final class ErrorTests: XCTestCase { let objcError = error.bridgeToObjectiveC XCTAssertEqual(error, objcError.bridgeToSwift) XCTAssertEqual(objcError.domain, CoreStoreErrorDomain) - XCTAssertEqual(objcError.code, CoreStoreErrorCode.MappingModelNotFound.rawValue) + XCTAssertEqual(objcError.code, CoreStoreErrorCode.mappingModelNotFound.rawValue) XCTAssertEqual(objcError.userInfo, userInfo) let objcError2 = objcError.bridgeToSwift.bridgeToObjectiveC XCTAssertEqual(error, objcError2.bridgeToSwift) XCTAssertEqual(objcError2.domain, CoreStoreErrorDomain) - XCTAssertEqual(objcError2.code, CoreStoreErrorCode.MappingModelNotFound.rawValue) + XCTAssertEqual(objcError2.code, CoreStoreErrorCode.mappingModelNotFound.rawValue) XCTAssertEqual(objcError2.userInfo, userInfo) } @@ -115,9 +115,9 @@ final class ErrorTests: XCTestCase { let dummyURL = URL(string: "file:///test1/test2.sqlite")! - let error = CoreStoreError.ProgressiveMigrationRequired(localStoreURL: dummyURL) + let error = CoreStoreError.progressiveMigrationRequired(localStoreURL: dummyURL) XCTAssertEqual((error as NSError).domain, CoreStoreErrorDomain) - XCTAssertEqual((error as NSError).code, CoreStoreErrorCode.ProgressiveMigrationRequired.rawValue) + XCTAssertEqual((error as NSError).code, CoreStoreErrorCode.progressiveMigrationRequired.rawValue) let userInfo: NSDictionary = [ "localStoreURL": dummyURL @@ -125,13 +125,13 @@ final class ErrorTests: XCTestCase { let objcError = error.bridgeToObjectiveC XCTAssertEqual(error, objcError.bridgeToSwift) XCTAssertEqual(objcError.domain, CoreStoreErrorDomain) - XCTAssertEqual(objcError.code, CoreStoreErrorCode.ProgressiveMigrationRequired.rawValue) + XCTAssertEqual(objcError.code, CoreStoreErrorCode.progressiveMigrationRequired.rawValue) XCTAssertEqual(objcError.userInfo, userInfo) let objcError2 = objcError.bridgeToSwift.bridgeToObjectiveC XCTAssertEqual(error, objcError2.bridgeToSwift) XCTAssertEqual(objcError2.domain, CoreStoreErrorDomain) - XCTAssertEqual(objcError2.code, CoreStoreErrorCode.ProgressiveMigrationRequired.rawValue) + XCTAssertEqual(objcError2.code, CoreStoreErrorCode.progressiveMigrationRequired.rawValue) XCTAssertEqual(objcError2.userInfo, userInfo) } @@ -147,9 +147,9 @@ final class ErrorTests: XCTestCase { "key3": Date() ] ) - let error = CoreStoreError.InternalError(NSError: internalError) + let error = CoreStoreError.internalError(NSError: internalError) XCTAssertEqual((error as NSError).domain, CoreStoreErrorDomain) - XCTAssertEqual((error as NSError).code, CoreStoreErrorCode.InternalError.rawValue) + XCTAssertEqual((error as NSError).code, CoreStoreErrorCode.internalError.rawValue) let userInfo: NSDictionary = [ "NSError": internalError @@ -157,13 +157,13 @@ final class ErrorTests: XCTestCase { let objcError = error.bridgeToObjectiveC XCTAssertEqual(error, objcError.bridgeToSwift) XCTAssertEqual(objcError.domain, CoreStoreErrorDomain) - XCTAssertEqual(objcError.code, CoreStoreErrorCode.InternalError.rawValue) + XCTAssertEqual(objcError.code, CoreStoreErrorCode.internalError.rawValue) XCTAssertEqual(objcError.userInfo, userInfo) let objcError2 = objcError.bridgeToSwift.bridgeToObjectiveC XCTAssertEqual(error, objcError2.bridgeToSwift) XCTAssertEqual(objcError2.domain, CoreStoreErrorDomain) - XCTAssertEqual(objcError2.code, CoreStoreErrorCode.InternalError.rawValue) + XCTAssertEqual(objcError2.code, CoreStoreErrorCode.internalError.rawValue) XCTAssertEqual(objcError2.userInfo, userInfo) } } diff --git a/CoreStoreTests/FetchTests.swift b/CoreStoreTests/FetchTests.swift index ab0367d..45e6021 100644 --- a/CoreStoreTests/FetchTests.swift +++ b/CoreStoreTests/FetchTests.swift @@ -42,9 +42,9 @@ final class FetchTests: BaseTestDataTestCase { self.prepareTestDataForStack(stack, configurations: configurations) - let from = From(TestEntity1) + let from = From() let fetchClauses: [FetchClause] = [ - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = stack.fetchOne(from, fetchClauses)! do { @@ -70,10 +70,10 @@ final class FetchTests: BaseTestDataTestCase { } do { - let fetchExpectation = self.expectationWithDescription("fetch") + let fetchExpectation = self.expectation(withDescription: "fetch") var existing1: TestEntity1? - stack.beginSynchronous { (transaction) in + _ = _ = stack.beginSynchronous { (transaction) in existing1 = transaction.fetchExisting(object) XCTAssertNotNil(existing1) @@ -89,7 +89,7 @@ final class FetchTests: BaseTestDataTestCase { } do { - let fetchExpectation = self.expectationWithDescription("fetch") + let fetchExpectation = self.expectation(withDescription: "fetch") stack.beginAsynchronous { (transaction) in let existing1 = transaction.fetchExisting(object) @@ -120,9 +120,9 @@ final class FetchTests: BaseTestDataTestCase { self.prepareTestDataForStack(stack, configurations: configurations) - let from = From(TestEntity1) + let from = From() let fetchClauses: [FetchClause] = [ - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let objects = stack.fetchAll(from, fetchClauses)! do { @@ -163,10 +163,10 @@ final class FetchTests: BaseTestDataTestCase { } do { - let fetchExpectation = self.expectationWithDescription("fetch") + let fetchExpectation = self.expectation(withDescription: "fetch") var existing1 = [TestEntity1]() - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in existing1 = transaction.fetchExisting(objects) XCTAssertEqual( @@ -192,7 +192,7 @@ final class FetchTests: BaseTestDataTestCase { } do { - let fetchExpectation = self.expectationWithDescription("fetch") + let fetchExpectation = self.expectation(withDescription: "fetch") stack.beginAsynchronous { (transaction) in let existing1 = transaction.fetchExisting(objects) @@ -233,12 +233,12 @@ final class FetchTests: BaseTestDataTestCase { do { - let from = From(TestEntity1) + let from = From() do { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = stack.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -252,7 +252,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 4), - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ] let object = stack.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -266,7 +266,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = stack.fetchOne(from, fetchClauses) XCTAssertNil(object) @@ -282,7 +282,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = stack.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -296,7 +296,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 4), - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ] let object = stack.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -310,7 +310,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = stack.fetchOne(from, fetchClauses) XCTAssertNil(object) @@ -326,15 +326,15 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] - let object = self.expectLogger([.LogWarning]) { + let object = self.expectLogger([.logWarning]) { stack.fetchOne(from, fetchClauses) } XCTAssertNil(object) - let objectID = self.expectLogger([.LogWarning]) { + let objectID = self.expectLogger([.logWarning]) { stack.fetchObjectID(from, fetchClauses) } @@ -344,15 +344,15 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 4), - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ] - let object = self.expectLogger([.LogWarning]) { + let object = self.expectLogger([.logWarning]) { stack.fetchOne(from, fetchClauses) } XCTAssertNil(object) - let objectID = self.expectLogger([.LogWarning]) { + let objectID = self.expectLogger([.logWarning]) { stack.fetchObjectID(from, fetchClauses) } @@ -372,12 +372,12 @@ final class FetchTests: BaseTestDataTestCase { do { - let from = From(TestEntity1) + let from = From() do { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = stack.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -391,7 +391,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 4), - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ] let object = stack.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -405,7 +405,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = stack.fetchOne(from, fetchClauses) XCTAssertNil(object) @@ -421,7 +421,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = stack.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -435,7 +435,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 4), - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ] let object = stack.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -449,7 +449,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = stack.fetchOne(from, fetchClauses) XCTAssertNil(object) @@ -465,7 +465,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = stack.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -479,7 +479,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 4), - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ] let object = stack.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -493,7 +493,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = stack.fetchOne(from, fetchClauses) XCTAssertNil(object) @@ -509,15 +509,15 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] - let object = self.expectLogger([.LogWarning]) { + let object = self.expectLogger([.logWarning]) { stack.fetchOne(from, fetchClauses) } XCTAssertNil(object) - let objectID = self.expectLogger([.LogWarning]) { + let objectID = self.expectLogger([.logWarning]) { stack.fetchObjectID(from, fetchClauses) } @@ -527,15 +527,15 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 4), - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ] - let object = self.expectLogger([.LogWarning]) { + let object = self.expectLogger([.logWarning]) { stack.fetchOne(from, fetchClauses) } XCTAssertNil(object) - let objectID = self.expectLogger([.LogWarning]) { + let objectID = self.expectLogger([.logWarning]) { stack.fetchObjectID(from, fetchClauses) } @@ -560,7 +560,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = stack.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -574,7 +574,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 4), - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ] let object = stack.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -588,7 +588,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = stack.fetchOne(from, fetchClauses) XCTAssertNil(object) @@ -604,7 +604,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = stack.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -618,7 +618,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 4), - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ] let object = stack.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -632,7 +632,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = stack.fetchOne(from, fetchClauses) XCTAssertNil(object) @@ -648,7 +648,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = stack.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -662,7 +662,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 4), - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ] let object = stack.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -676,7 +676,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = stack.fetchOne(from, fetchClauses) XCTAssertNil(object) @@ -698,12 +698,12 @@ final class FetchTests: BaseTestDataTestCase { do { - let from = From(TestEntity1) + let from = From() do { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = stack.fetchAll(from, fetchClauses) @@ -729,7 +729,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 5), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = stack.fetchAll(from, fetchClauses) @@ -755,7 +755,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let objects = stack.fetchAll(from, fetchClauses) XCTAssertNotNil(objects) @@ -773,7 +773,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = stack.fetchAll(from, fetchClauses) @@ -799,7 +799,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 5), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = stack.fetchAll(from, fetchClauses) @@ -825,7 +825,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let objects = stack.fetchAll(from, fetchClauses) XCTAssertNotNil(objects) @@ -843,15 +843,15 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 4), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] - let objects = self.expectLogger([.LogWarning]) { + let objects = self.expectLogger([.logWarning]) { stack.fetchAll(from, fetchClauses) } XCTAssertNil(objects) - let objectIDs = self.expectLogger([.LogWarning]) { + let objectIDs = self.expectLogger([.logWarning]) { stack.fetchObjectIDs(from, fetchClauses) } @@ -861,15 +861,15 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("testNumber", isEqualTo: 0), - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ] - let objects = self.expectLogger([.LogWarning]) { + let objects = self.expectLogger([.logWarning]) { stack.fetchAll(from, fetchClauses) } XCTAssertNil(objects) - let objectIDs = self.expectLogger([.LogWarning]) { + let objectIDs = self.expectLogger([.logWarning]) { stack.fetchObjectIDs(from, fetchClauses) } @@ -889,19 +889,19 @@ final class FetchTests: BaseTestDataTestCase { do { - let from = From(TestEntity1) + let from = From() do { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 3), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = stack.fetchAll(from, fetchClauses) XCTAssertNotNil(objects) XCTAssertEqual(objects?.count, 3) XCTAssertEqual( - Set((objects ?? []).map { $0.testNumber!.integerValue }), + Set((objects ?? []).map { $0.testNumber!.intValue }), [4, 5] as Set ) // configuration is ambiguous @@ -917,14 +917,14 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 3), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = stack.fetchAll(from, fetchClauses) XCTAssertNotNil(objects) XCTAssertEqual(objects?.count, 3) XCTAssertEqual( - Set((objects ?? []).map { $0.testNumber!.integerValue }), + Set((objects ?? []).map { $0.testNumber!.intValue }), [1, 2] as Set ) // configuration is ambiguous @@ -940,7 +940,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let objects = stack.fetchAll(from, fetchClauses) XCTAssertNotNil(objects) @@ -958,7 +958,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 3), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = stack.fetchAll(from, fetchClauses) @@ -983,7 +983,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 3), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = stack.fetchAll(from, fetchClauses) @@ -1008,7 +1008,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let objects = stack.fetchAll(from, fetchClauses) XCTAssertNotNil(objects) @@ -1026,7 +1026,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 3), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = stack.fetchAll(from, fetchClauses) @@ -1051,7 +1051,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 3), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = stack.fetchAll(from, fetchClauses) @@ -1076,7 +1076,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let objects = stack.fetchAll(from, fetchClauses) XCTAssertNotNil(objects) @@ -1093,15 +1093,15 @@ final class FetchTests: BaseTestDataTestCase { do { let fetchClauses: [FetchClause] = [ - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] - let objects = self.expectLogger([.LogWarning]) { + let objects = self.expectLogger([.logWarning]) { stack.fetchAll(from, fetchClauses) } XCTAssertNil(objects) - let objectIDs = self.expectLogger([.LogWarning]) { + let objectIDs = self.expectLogger([.logWarning]) { stack.fetchObjectIDs(from, fetchClauses) } @@ -1110,15 +1110,15 @@ final class FetchTests: BaseTestDataTestCase { do { let fetchClauses: [FetchClause] = [ - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ] - let objects = self.expectLogger([.LogWarning]) { + let objects = self.expectLogger([.logWarning]) { stack.fetchAll(from, fetchClauses) } XCTAssertNil(objects) - let objectIDs = self.expectLogger([.LogWarning]) { + let objectIDs = self.expectLogger([.logWarning]) { stack.fetchObjectIDs(from, fetchClauses) } @@ -1143,14 +1143,14 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 3), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = stack.fetchAll(from, fetchClauses) XCTAssertNotNil(objects) XCTAssertEqual(objects?.count, 3) XCTAssertEqual( - Set((objects ?? []).map { $0.testNumber!.integerValue }), + Set((objects ?? []).map { $0.testNumber!.intValue }), [4, 5] as Set ) // configuration is ambiguous @@ -1166,14 +1166,14 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 3), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = stack.fetchAll(from, fetchClauses) XCTAssertNotNil(objects) XCTAssertEqual(objects?.count, 3) XCTAssertEqual( - Set((objects ?? []).map { $0.testNumber!.integerValue }), + Set((objects ?? []).map { $0.testNumber!.intValue }), [1, 2] as Set ) // configuration is ambiguous @@ -1189,7 +1189,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let objects = stack.fetchAll(from, fetchClauses) XCTAssertNotNil(objects) @@ -1207,7 +1207,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 3), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = stack.fetchAll(from, fetchClauses) @@ -1232,7 +1232,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 3), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = stack.fetchAll(from, fetchClauses) @@ -1257,7 +1257,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let objects = stack.fetchAll(from, fetchClauses) XCTAssertNotNil(objects) @@ -1275,7 +1275,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 3), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = stack.fetchAll(from, fetchClauses) @@ -1300,7 +1300,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 3), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = stack.fetchAll(from, fetchClauses) @@ -1325,7 +1325,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let objects = stack.fetchAll(from, fetchClauses) XCTAssertNotNil(objects) @@ -1349,13 +1349,13 @@ final class FetchTests: BaseTestDataTestCase { do { - let from = From(TestEntity1) + let from = From() do { let count = stack.fetchCount( from, Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -1366,7 +1366,7 @@ final class FetchTests: BaseTestDataTestCase { let count = stack.fetchCount( from, Where("%K < %@", "testNumber", 5), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -1377,7 +1377,7 @@ final class FetchTests: BaseTestDataTestCase { let count = stack.fetchCount( from, Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ) XCTAssertNotNil(count) XCTAssertEqual(count, 0) @@ -1391,7 +1391,7 @@ final class FetchTests: BaseTestDataTestCase { let count = stack.fetchCount( from, Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -1402,7 +1402,7 @@ final class FetchTests: BaseTestDataTestCase { let count = stack.fetchCount( from, Where("%K < %@", "testNumber", 5), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -1413,7 +1413,7 @@ final class FetchTests: BaseTestDataTestCase { let count = stack.fetchCount( from, Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ) XCTAssertNotNil(count) XCTAssertEqual(count, 0) @@ -1424,24 +1424,24 @@ final class FetchTests: BaseTestDataTestCase { let from = From("Config1") do { - let count = self.expectLogger([.LogWarning]) { + let count = self.expectLogger([.logWarning]) { stack.fetchCount( from, Where("%K < %@", "testNumber", 4), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ) } XCTAssertNil(count) } do { - let count = self.expectLogger([.LogWarning]) { + let count = self.expectLogger([.logWarning]) { stack.fetchCount( from, Where("testNumber", isEqualTo: 0), - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ) } XCTAssertNil(count) @@ -1460,13 +1460,13 @@ final class FetchTests: BaseTestDataTestCase { do { - let from = From(TestEntity1) + let from = From() do { let count = stack.fetchCount( from, Where("%K > %@", "testNumber", 3), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -1477,7 +1477,7 @@ final class FetchTests: BaseTestDataTestCase { let count = stack.fetchCount( from, Where("%K < %@", "testNumber", 3), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -1488,7 +1488,7 @@ final class FetchTests: BaseTestDataTestCase { let count = stack.fetchCount( from, Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ) XCTAssertNotNil(count) XCTAssertEqual(count, 0) @@ -1502,7 +1502,7 @@ final class FetchTests: BaseTestDataTestCase { let count = stack.fetchCount( from, Where("%K > %@", "testNumber", 3), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -1513,7 +1513,7 @@ final class FetchTests: BaseTestDataTestCase { let count = stack.fetchCount( from, Where("%K < %@", "testNumber", 3), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -1524,7 +1524,7 @@ final class FetchTests: BaseTestDataTestCase { let count = stack.fetchCount( from, Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ) XCTAssertNotNil(count) XCTAssertEqual(count, 0) @@ -1538,7 +1538,7 @@ final class FetchTests: BaseTestDataTestCase { let count = stack.fetchCount( from, Where("%K > %@", "testNumber", 3), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -1549,7 +1549,7 @@ final class FetchTests: BaseTestDataTestCase { let count = stack.fetchCount( from, Where("%K < %@", "testNumber", 3), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -1560,7 +1560,7 @@ final class FetchTests: BaseTestDataTestCase { let count = stack.fetchCount( from, Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ) XCTAssertNotNil(count) XCTAssertEqual(count, 0) @@ -1571,24 +1571,24 @@ final class FetchTests: BaseTestDataTestCase { let from = From("Config2") do { - let count = self.expectLogger([.LogWarning]) { + let count = self.expectLogger([.logWarning]) { stack.fetchCount( from, Where("%K < %@", "testNumber", 4), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ) } XCTAssertNil(count) } do { - let count = self.expectLogger([.LogWarning]) { + let count = self.expectLogger([.logWarning]) { stack.fetchCount( from, Where("testNumber", isEqualTo: 0), - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ) } XCTAssertNil(count) @@ -1613,7 +1613,7 @@ final class FetchTests: BaseTestDataTestCase { let count = stack.fetchCount( from, Where("%K > %@", "testNumber", 3), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -1624,7 +1624,7 @@ final class FetchTests: BaseTestDataTestCase { let count = stack.fetchCount( from, Where("%K < %@", "testNumber", 3), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -1635,7 +1635,7 @@ final class FetchTests: BaseTestDataTestCase { let count = stack.fetchCount( from, Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ) XCTAssertNotNil(count) XCTAssertEqual(count, 0) @@ -1649,7 +1649,7 @@ final class FetchTests: BaseTestDataTestCase { let count = stack.fetchCount( from, Where("%K > %@", "testNumber", 3), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -1660,7 +1660,7 @@ final class FetchTests: BaseTestDataTestCase { let count = stack.fetchCount( from, Where("%K < %@", "testNumber", 3), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -1671,7 +1671,7 @@ final class FetchTests: BaseTestDataTestCase { let count = stack.fetchCount( from, Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ) XCTAssertNotNil(count) XCTAssertEqual(count, 0) @@ -1685,7 +1685,7 @@ final class FetchTests: BaseTestDataTestCase { let count = stack.fetchCount( from, Where("%K > %@", "testNumber", 3), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -1696,7 +1696,7 @@ final class FetchTests: BaseTestDataTestCase { let count = stack.fetchCount( from, Where("%K < %@", "testNumber", 3), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -1707,7 +1707,7 @@ final class FetchTests: BaseTestDataTestCase { let count = stack.fetchCount( from, Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ) XCTAssertNotNil(count) XCTAssertEqual(count, 0) @@ -1724,14 +1724,14 @@ final class FetchTests: BaseTestDataTestCase { self.prepareTestDataForStack(stack, configurations: configurations) - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in - let from = From(TestEntity1) + let from = From() do { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = transaction.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -1745,7 +1745,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 4), - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ] let object = transaction.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -1759,7 +1759,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = transaction.fetchOne(from, fetchClauses) XCTAssertNil(object) @@ -1768,14 +1768,14 @@ final class FetchTests: BaseTestDataTestCase { XCTAssertNil(objectID) } } - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in let from = From(nil) do { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = transaction.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -1789,7 +1789,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 4), - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ] let object = transaction.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -1803,7 +1803,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = transaction.fetchOne(from, fetchClauses) XCTAssertNil(object) @@ -1812,22 +1812,22 @@ final class FetchTests: BaseTestDataTestCase { XCTAssertNil(objectID) } } - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in let from = From("Config1") do { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] - let object = self.expectLogger([.LogWarning]) { + let object = self.expectLogger([.logWarning]) { transaction.fetchOne(from, fetchClauses) } XCTAssertNil(object) - let objectID = self.expectLogger([.LogWarning]) { + let objectID = self.expectLogger([.logWarning]) { transaction.fetchObjectID(from, fetchClauses) } @@ -1837,15 +1837,15 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 4), - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ] - let object = self.expectLogger([.LogWarning]) { + let object = self.expectLogger([.logWarning]) { transaction.fetchOne(from, fetchClauses) } XCTAssertNil(object) - let objectID = self.expectLogger([.LogWarning]) { + let objectID = self.expectLogger([.logWarning]) { transaction.fetchObjectID(from, fetchClauses) } @@ -1863,14 +1863,14 @@ final class FetchTests: BaseTestDataTestCase { self.prepareTestDataForStack(stack, configurations: configurations) - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in - let from = From(TestEntity1) + let from = From() do { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = transaction.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -1884,7 +1884,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 4), - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ] let object = transaction.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -1898,7 +1898,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = transaction.fetchOne(from, fetchClauses) XCTAssertNil(object) @@ -1907,14 +1907,14 @@ final class FetchTests: BaseTestDataTestCase { XCTAssertNil(objectID) } } - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in let from = From(nil) do { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = transaction.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -1928,7 +1928,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 4), - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ] let object = transaction.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -1942,7 +1942,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = transaction.fetchOne(from, fetchClauses) XCTAssertNil(object) @@ -1951,14 +1951,14 @@ final class FetchTests: BaseTestDataTestCase { XCTAssertNil(objectID) } } - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in let from = From("Config1") do { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = transaction.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -1972,7 +1972,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 4), - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ] let object = transaction.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -1986,7 +1986,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = transaction.fetchOne(from, fetchClauses) XCTAssertNil(object) @@ -1995,22 +1995,22 @@ final class FetchTests: BaseTestDataTestCase { XCTAssertNil(objectID) } } - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in let from = From("Config2") do { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] - let object = self.expectLogger([.LogWarning]) { + let object = self.expectLogger([.logWarning]) { transaction.fetchOne(from, fetchClauses) } XCTAssertNil(object) - let objectID = self.expectLogger([.LogWarning]) { + let objectID = self.expectLogger([.logWarning]) { transaction.fetchObjectID(from, fetchClauses) } @@ -2020,15 +2020,15 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 4), - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ] - let object = self.expectLogger([.LogWarning]) { + let object = self.expectLogger([.logWarning]) { transaction.fetchOne(from, fetchClauses) } XCTAssertNil(object) - let objectID = self.expectLogger([.LogWarning]) { + let objectID = self.expectLogger([.logWarning]) { transaction.fetchObjectID(from, fetchClauses) } @@ -2046,14 +2046,14 @@ final class FetchTests: BaseTestDataTestCase { self.prepareTestDataForStack(stack, configurations: configurations) - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in let from = From(nil, "Config1") do { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = transaction.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -2067,7 +2067,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 4), - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ] let object = transaction.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -2081,7 +2081,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = transaction.fetchOne(from, fetchClauses) XCTAssertNil(object) @@ -2090,14 +2090,14 @@ final class FetchTests: BaseTestDataTestCase { XCTAssertNil(objectID) } } - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in let from = From(nil, "Config2") do { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = transaction.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -2111,7 +2111,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 4), - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ] let object = transaction.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -2125,7 +2125,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = transaction.fetchOne(from, fetchClauses) XCTAssertNil(object) @@ -2134,14 +2134,14 @@ final class FetchTests: BaseTestDataTestCase { XCTAssertNil(objectID) } } - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in let from = From("Config1", "Config2") do { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = transaction.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -2155,7 +2155,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 4), - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ] let object = transaction.fetchOne(from, fetchClauses) XCTAssertNotNil(object) @@ -2169,7 +2169,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let object = transaction.fetchOne(from, fetchClauses) XCTAssertNil(object) @@ -2189,14 +2189,14 @@ final class FetchTests: BaseTestDataTestCase { self.prepareTestDataForStack(stack, configurations: configurations) - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in - let from = From(TestEntity1) + let from = From() do { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = transaction.fetchAll(from, fetchClauses) @@ -2222,7 +2222,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 5), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = transaction.fetchAll(from, fetchClauses) @@ -2248,7 +2248,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let objects = transaction.fetchAll(from, fetchClauses) XCTAssertNotNil(objects) @@ -2259,14 +2259,14 @@ final class FetchTests: BaseTestDataTestCase { XCTAssertEqual(objectIDs?.count, 0) } } - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in let from = From(nil) do { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = transaction.fetchAll(from, fetchClauses) @@ -2292,7 +2292,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 5), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = transaction.fetchAll(from, fetchClauses) @@ -2318,7 +2318,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let objects = transaction.fetchAll(from, fetchClauses) XCTAssertNotNil(objects) @@ -2329,22 +2329,22 @@ final class FetchTests: BaseTestDataTestCase { XCTAssertEqual(objectIDs?.count, 0) } } - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in let from = From("Config1") do { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 4), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] - let objects = self.expectLogger([.LogWarning]) { + let objects = self.expectLogger([.logWarning]) { transaction.fetchAll(from, fetchClauses) } XCTAssertNil(objects) - let objectIDs = self.expectLogger([.LogWarning]) { + let objectIDs = self.expectLogger([.logWarning]) { transaction.fetchObjectIDs(from, fetchClauses) } @@ -2354,15 +2354,15 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("testNumber", isEqualTo: 0), - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ] - let objects = self.expectLogger([.LogWarning]) { + let objects = self.expectLogger([.logWarning]) { transaction.fetchAll(from, fetchClauses) } XCTAssertNil(objects) - let objectIDs = self.expectLogger([.LogWarning]) { + let objectIDs = self.expectLogger([.logWarning]) { transaction.fetchObjectIDs(from, fetchClauses) } @@ -2380,21 +2380,21 @@ final class FetchTests: BaseTestDataTestCase { self.prepareTestDataForStack(stack, configurations: configurations) - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in - let from = From(TestEntity1) + let from = From() do { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 3), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = transaction.fetchAll(from, fetchClauses) XCTAssertNotNil(objects) XCTAssertEqual(objects?.count, 3) XCTAssertEqual( - Set((objects ?? []).map { $0.testNumber!.integerValue }), + Set((objects ?? []).map { $0.testNumber!.intValue }), [4, 5] as Set ) // configuration is ambiguous @@ -2410,14 +2410,14 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 3), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = transaction.fetchAll(from, fetchClauses) XCTAssertNotNil(objects) XCTAssertEqual(objects?.count, 3) XCTAssertEqual( - Set((objects ?? []).map { $0.testNumber!.integerValue }), + Set((objects ?? []).map { $0.testNumber!.intValue }), [1, 2] as Set ) // configuration is ambiguous @@ -2433,7 +2433,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let objects = transaction.fetchAll(from, fetchClauses) XCTAssertNotNil(objects) @@ -2444,14 +2444,14 @@ final class FetchTests: BaseTestDataTestCase { XCTAssertEqual(objectIDs?.count, 0) } } - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in let from = From(nil) do { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 3), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = transaction.fetchAll(from, fetchClauses) @@ -2476,7 +2476,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 3), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = transaction.fetchAll(from, fetchClauses) @@ -2501,7 +2501,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let objects = transaction.fetchAll(from, fetchClauses) XCTAssertNotNil(objects) @@ -2512,14 +2512,14 @@ final class FetchTests: BaseTestDataTestCase { XCTAssertEqual(objectIDs?.count, 0) } } - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in let from = From("Config1") do { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 3), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = transaction.fetchAll(from, fetchClauses) @@ -2544,7 +2544,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 3), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = transaction.fetchAll(from, fetchClauses) @@ -2569,7 +2569,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let objects = transaction.fetchAll(from, fetchClauses) XCTAssertNotNil(objects) @@ -2580,21 +2580,21 @@ final class FetchTests: BaseTestDataTestCase { XCTAssertEqual(objectIDs?.count, 0) } } - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in let from = From("Config2") do { let fetchClauses: [FetchClause] = [ - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] - let objects = self.expectLogger([.LogWarning]) { + let objects = self.expectLogger([.logWarning]) { transaction.fetchAll(from, fetchClauses) } XCTAssertNil(objects) - let objectIDs = self.expectLogger([.LogWarning]) { + let objectIDs = self.expectLogger([.logWarning]) { transaction.fetchObjectIDs(from, fetchClauses) } @@ -2603,15 +2603,15 @@ final class FetchTests: BaseTestDataTestCase { do { let fetchClauses: [FetchClause] = [ - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ] - let objects = self.expectLogger([.LogWarning]) { + let objects = self.expectLogger([.logWarning]) { transaction.fetchAll(from, fetchClauses) } XCTAssertNil(objects) - let objectIDs = self.expectLogger([.LogWarning]) { + let objectIDs = self.expectLogger([.logWarning]) { transaction.fetchObjectIDs(from, fetchClauses) } @@ -2629,21 +2629,21 @@ final class FetchTests: BaseTestDataTestCase { self.prepareTestDataForStack(stack, configurations: configurations) - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in let from = From(nil, "Config1") do { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 3), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = transaction.fetchAll(from, fetchClauses) XCTAssertNotNil(objects) XCTAssertEqual(objects?.count, 3) XCTAssertEqual( - Set((objects ?? []).map { $0.testNumber!.integerValue }), + Set((objects ?? []).map { $0.testNumber!.intValue }), [4, 5] as Set ) // configuration is ambiguous @@ -2659,14 +2659,14 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 3), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = transaction.fetchAll(from, fetchClauses) XCTAssertNotNil(objects) XCTAssertEqual(objects?.count, 3) XCTAssertEqual( - Set((objects ?? []).map { $0.testNumber!.integerValue }), + Set((objects ?? []).map { $0.testNumber!.intValue }), [1, 2] as Set ) // configuration is ambiguous @@ -2682,7 +2682,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let objects = transaction.fetchAll(from, fetchClauses) XCTAssertNotNil(objects) @@ -2693,14 +2693,14 @@ final class FetchTests: BaseTestDataTestCase { XCTAssertEqual(objectIDs?.count, 0) } } - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in let from = From(nil, "Config2") do { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 3), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = transaction.fetchAll(from, fetchClauses) @@ -2725,7 +2725,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 3), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = transaction.fetchAll(from, fetchClauses) @@ -2750,7 +2750,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let objects = transaction.fetchAll(from, fetchClauses) XCTAssertNotNil(objects) @@ -2761,14 +2761,14 @@ final class FetchTests: BaseTestDataTestCase { XCTAssertEqual(objectIDs?.count, 0) } } - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in let from = From("Config1", "Config2") do { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 3), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = transaction.fetchAll(from, fetchClauses) @@ -2793,7 +2793,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K < %@", "testNumber", 3), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ] let objects = transaction.fetchAll(from, fetchClauses) @@ -2818,7 +2818,7 @@ final class FetchTests: BaseTestDataTestCase { let fetchClauses: [FetchClause] = [ Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] let objects = transaction.fetchAll(from, fetchClauses) XCTAssertNotNil(objects) @@ -2840,15 +2840,15 @@ final class FetchTests: BaseTestDataTestCase { self.prepareTestDataForStack(stack, configurations: configurations) - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in - let from = From(TestEntity1) + let from = From() do { let count = transaction.fetchCount( from, Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -2859,7 +2859,7 @@ final class FetchTests: BaseTestDataTestCase { let count = transaction.fetchCount( from, Where("%K < %@", "testNumber", 5), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -2870,13 +2870,13 @@ final class FetchTests: BaseTestDataTestCase { let count = transaction.fetchCount( from, Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ) XCTAssertNotNil(count) XCTAssertEqual(count, 0) } } - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in let from = From(nil) do { @@ -2884,7 +2884,7 @@ final class FetchTests: BaseTestDataTestCase { let count = transaction.fetchCount( from, Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -2895,7 +2895,7 @@ final class FetchTests: BaseTestDataTestCase { let count = transaction.fetchCount( from, Where("%K < %@", "testNumber", 5), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -2906,35 +2906,35 @@ final class FetchTests: BaseTestDataTestCase { let count = transaction.fetchCount( from, Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ) XCTAssertNotNil(count) XCTAssertEqual(count, 0) } } - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in let from = From("Config1") do { - let count = self.expectLogger([.LogWarning]) { + let count = self.expectLogger([.logWarning]) { transaction.fetchCount( from, Where("%K < %@", "testNumber", 4), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ) } XCTAssertNil(count) } do { - let count = self.expectLogger([.LogWarning]) { + let count = self.expectLogger([.logWarning]) { transaction.fetchCount( from, Where("testNumber", isEqualTo: 0), - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ) } XCTAssertNil(count) @@ -2951,15 +2951,15 @@ final class FetchTests: BaseTestDataTestCase { self.prepareTestDataForStack(stack, configurations: configurations) - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in - let from = From(TestEntity1) + let from = From() do { let count = transaction.fetchCount( from, Where("%K > %@", "testNumber", 3), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -2970,7 +2970,7 @@ final class FetchTests: BaseTestDataTestCase { let count = transaction.fetchCount( from, Where("%K < %@", "testNumber", 3), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -2981,13 +2981,13 @@ final class FetchTests: BaseTestDataTestCase { let count = transaction.fetchCount( from, Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ) XCTAssertNotNil(count) XCTAssertEqual(count, 0) } } - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in let from = From(nil) do { @@ -2995,7 +2995,7 @@ final class FetchTests: BaseTestDataTestCase { let count = transaction.fetchCount( from, Where("%K > %@", "testNumber", 3), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -3006,7 +3006,7 @@ final class FetchTests: BaseTestDataTestCase { let count = transaction.fetchCount( from, Where("%K < %@", "testNumber", 3), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -3017,13 +3017,13 @@ final class FetchTests: BaseTestDataTestCase { let count = transaction.fetchCount( from, Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ) XCTAssertNotNil(count) XCTAssertEqual(count, 0) } } - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in let from = From("Config1") do { @@ -3031,7 +3031,7 @@ final class FetchTests: BaseTestDataTestCase { let count = transaction.fetchCount( from, Where("%K > %@", "testNumber", 3), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -3042,7 +3042,7 @@ final class FetchTests: BaseTestDataTestCase { let count = transaction.fetchCount( from, Where("%K < %@", "testNumber", 3), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -3053,35 +3053,35 @@ final class FetchTests: BaseTestDataTestCase { let count = transaction.fetchCount( from, Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ) XCTAssertNotNil(count) XCTAssertEqual(count, 0) } } - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in let from = From("Config2") do { - let count = self.expectLogger([.LogWarning]) { + let count = self.expectLogger([.logWarning]) { transaction.fetchCount( from, Where("%K < %@", "testNumber", 4), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ) } XCTAssertNil(count) } do { - let count = self.expectLogger([.LogWarning]) { + let count = self.expectLogger([.logWarning]) { transaction.fetchCount( from, Where("testNumber", isEqualTo: 0), - OrderBy(.Descending("testEntityID")) + OrderBy(.descending("testEntityID")) ) } XCTAssertNil(count) @@ -3098,7 +3098,7 @@ final class FetchTests: BaseTestDataTestCase { self.prepareTestDataForStack(stack, configurations: configurations) - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in let from = From(nil, "Config1") do { @@ -3106,7 +3106,7 @@ final class FetchTests: BaseTestDataTestCase { let count = transaction.fetchCount( from, Where("%K > %@", "testNumber", 3), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -3117,7 +3117,7 @@ final class FetchTests: BaseTestDataTestCase { let count = transaction.fetchCount( from, Where("%K < %@", "testNumber", 3), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -3128,13 +3128,13 @@ final class FetchTests: BaseTestDataTestCase { let count = transaction.fetchCount( from, Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ) XCTAssertNotNil(count) XCTAssertEqual(count, 0) } } - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in let from = From(nil, "Config2") do { @@ -3142,7 +3142,7 @@ final class FetchTests: BaseTestDataTestCase { let count = transaction.fetchCount( from, Where("%K > %@", "testNumber", 3), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -3153,7 +3153,7 @@ final class FetchTests: BaseTestDataTestCase { let count = transaction.fetchCount( from, Where("%K < %@", "testNumber", 3), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -3164,13 +3164,13 @@ final class FetchTests: BaseTestDataTestCase { let count = transaction.fetchCount( from, Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ) XCTAssertNotNil(count) XCTAssertEqual(count, 0) } } - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in let from = From("Config1", "Config2") do { @@ -3178,7 +3178,7 @@ final class FetchTests: BaseTestDataTestCase { let count = transaction.fetchCount( from, Where("%K > %@", "testNumber", 3), - OrderBy(.Ascending("testEntityID")), + OrderBy(.ascending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -3189,7 +3189,7 @@ final class FetchTests: BaseTestDataTestCase { let count = transaction.fetchCount( from, Where("%K < %@", "testNumber", 3), - OrderBy(.Descending("testEntityID")), + OrderBy(.descending("testEntityID")), Tweak { $0.fetchLimit = 3 } ) XCTAssertNotNil(count) @@ -3200,7 +3200,7 @@ final class FetchTests: BaseTestDataTestCase { let count = transaction.fetchCount( from, Where("%K > %@", "testNumber", 5), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ) XCTAssertNotNil(count) XCTAssertEqual(count, 0) diff --git a/CoreStoreTests/FromTests.swift b/CoreStoreTests/FromTests.swift index 48665ce..866ce43 100644 --- a/CoreStoreTests/FromTests.swift +++ b/CoreStoreTests/FromTests.swift @@ -74,7 +74,7 @@ final class FromTests: BaseTestCase { let from = From() - let request = NSFetchRequest() + let request = NSFetchRequest() let storesFound = from.applyToFetchRequest(request, context: dataStack.mainContext) XCTAssertTrue(storesFound) XCTAssertNotNil(request.entity) @@ -89,8 +89,8 @@ final class FromTests: BaseTestCase { let from = From("Config1") - let request = NSFetchRequest() - let storesFound = self.expectLogger([.LogWarning]) { + let request = NSFetchRequest() + let storesFound = self.expectLogger([.logWarning]) { from.applyToFetchRequest(request, context: dataStack.mainContext) } @@ -115,7 +115,7 @@ final class FromTests: BaseTestCase { let from = From() - let request = NSFetchRequest() + let request = NSFetchRequest() let storesFound = from.applyToFetchRequest(request, context: dataStack.mainContext) XCTAssertTrue(storesFound) XCTAssertNotNil(request.entity) @@ -130,7 +130,7 @@ final class FromTests: BaseTestCase { let from = From("Config1") - let request = NSFetchRequest() + let request = NSFetchRequest() let storesFound = from.applyToFetchRequest(request, context: dataStack.mainContext) XCTAssertTrue(storesFound) XCTAssertNotNil(request.entity) @@ -145,8 +145,8 @@ final class FromTests: BaseTestCase { let from = From("Config2") - let request = NSFetchRequest() - let storesFound = self.expectLogger([.LogWarning]) { + let request = NSFetchRequest() + let storesFound = self.expectLogger([.logWarning]) { from.applyToFetchRequest(request, context: dataStack.mainContext) } @@ -163,8 +163,8 @@ final class FromTests: BaseTestCase { let from = From() - let request = NSFetchRequest() - let storesFound = self.expectLogger([.LogWarning]) { + let request = NSFetchRequest() + let storesFound = self.expectLogger([.logWarning]) { from.applyToFetchRequest(request, context: dataStack.mainContext) } @@ -181,8 +181,8 @@ final class FromTests: BaseTestCase { let from = From("Config1") - let request = NSFetchRequest() - let storesFound = self.expectLogger([.LogWarning]) { + let request = NSFetchRequest() + let storesFound = self.expectLogger([.logWarning]) { from.applyToFetchRequest(request, context: dataStack.mainContext) } @@ -199,8 +199,8 @@ final class FromTests: BaseTestCase { let from = From("Config2") - let request = NSFetchRequest() - let storesFound = self.expectLogger([.LogWarning]) { + let request = NSFetchRequest() + let storesFound = self.expectLogger([.logWarning]) { from.applyToFetchRequest(request, context: dataStack.mainContext) } @@ -225,7 +225,7 @@ final class FromTests: BaseTestCase { let from = From() - let request = NSFetchRequest() + let request = NSFetchRequest() let storesFound = from.applyToFetchRequest(request, context: dataStack.mainContext) XCTAssertTrue(storesFound) XCTAssertNotNil(request.entity) @@ -240,7 +240,7 @@ final class FromTests: BaseTestCase { let from = From("Config1") - let request = NSFetchRequest() + let request = NSFetchRequest() let storesFound = from.applyToFetchRequest(request, context: dataStack.mainContext) XCTAssertTrue(storesFound) XCTAssertNotNil(request.entity) @@ -255,8 +255,8 @@ final class FromTests: BaseTestCase { let from = From("Config2") - let request = NSFetchRequest() - let storesFound = self.expectLogger([.LogWarning]) { + let request = NSFetchRequest() + let storesFound = self.expectLogger([.logWarning]) { from.applyToFetchRequest(request, context: dataStack.mainContext) } @@ -273,7 +273,7 @@ final class FromTests: BaseTestCase { let from = From() - let request = NSFetchRequest() + let request = NSFetchRequest() let storesFound = from.applyToFetchRequest(request, context: dataStack.mainContext) XCTAssertTrue(storesFound) XCTAssertNotNil(request.entity) @@ -288,8 +288,8 @@ final class FromTests: BaseTestCase { let from = From("Config1") - let request = NSFetchRequest() - let storesFound = self.expectLogger([.LogWarning]) { + let request = NSFetchRequest() + let storesFound = self.expectLogger([.logWarning]) { from.applyToFetchRequest(request, context: dataStack.mainContext) } @@ -306,8 +306,8 @@ final class FromTests: BaseTestCase { let from = From("Config2") - let request = NSFetchRequest() - let storesFound = self.expectLogger([.LogWarning]) { + let request = NSFetchRequest() + let storesFound = self.expectLogger([.logWarning]) { from.applyToFetchRequest(request, context: dataStack.mainContext) } @@ -332,7 +332,7 @@ final class FromTests: BaseTestCase { let from = From() - let request = NSFetchRequest() + let request = NSFetchRequest() let storesFound = from.applyToFetchRequest(request, context: dataStack.mainContext) XCTAssertTrue(storesFound) XCTAssertNotNil(request.entity) @@ -347,7 +347,7 @@ final class FromTests: BaseTestCase { let from = From("Config1") - let request = NSFetchRequest() + let request = NSFetchRequest() let storesFound = from.applyToFetchRequest(request, context: dataStack.mainContext) XCTAssertTrue(storesFound) XCTAssertNotNil(request.entity) @@ -362,8 +362,8 @@ final class FromTests: BaseTestCase { let from = From("Config2") - let request = NSFetchRequest() - let storesFound = self.expectLogger([.LogWarning]) { + let request = NSFetchRequest() + let storesFound = self.expectLogger([.logWarning]) { from.applyToFetchRequest(request, context: dataStack.mainContext) } @@ -380,7 +380,7 @@ final class FromTests: BaseTestCase { let from = From() - let request = NSFetchRequest() + let request = NSFetchRequest() let storesFound = from.applyToFetchRequest(request, context: dataStack.mainContext) XCTAssertTrue(storesFound) XCTAssertNotNil(request.entity) @@ -395,8 +395,8 @@ final class FromTests: BaseTestCase { let from = From("Config1") - let request = NSFetchRequest() - let storesFound = self.expectLogger([.LogWarning]) { + let request = NSFetchRequest() + let storesFound = self.expectLogger([.logWarning]) { from.applyToFetchRequest(request, context: dataStack.mainContext) } @@ -413,7 +413,7 @@ final class FromTests: BaseTestCase { let from = From("Config2") - let request = NSFetchRequest() + let request = NSFetchRequest() let storesFound = from.applyToFetchRequest(request, context: dataStack.mainContext) XCTAssertTrue(storesFound) XCTAssertNotNil(request.entity) diff --git a/CoreStoreTests/GroupByTests.swift b/CoreStoreTests/GroupByTests.swift index 5ed3aa2..90ad2c7 100644 --- a/CoreStoreTests/GroupByTests.swift +++ b/CoreStoreTests/GroupByTests.swift @@ -68,8 +68,8 @@ final class GroupByTests: BaseTestCase { let groupBy = GroupBy("testString") - let request = NSFetchRequest() - _ = From(TestEntity1).applyToFetchRequest(request, context: dataStack.mainContext) + let request = NSFetchRequest() + _ = From().applyToFetchRequest(request, context: dataStack.mainContext) groupBy.applyToFetchRequest(request) XCTAssertNotNil(request.propertiesToGroupBy) diff --git a/CoreStoreTests/ImportTests.swift b/CoreStoreTests/ImportTests.swift index 94dfffe..7372551 100644 --- a/CoreStoreTests/ImportTests.swift +++ b/CoreStoreTests/ImportTests.swift @@ -38,24 +38,24 @@ class ImportTests: BaseTestDataTestCase { self.prepareStack { (stack) in - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in do { let object = try transaction.importObject( - Into(TestEntity1), + Into(), source: [ - "testBoolean": NSNumber(bool: true), - "testNumber": NSNumber(integer: 1), + "testBoolean": NSNumber(value: true), + "testNumber": NSNumber(value: 1), "testDecimal": NSDecimalNumber(string: "1"), "testString": "nil:TestEntity1:1", - "testData": ("nil:TestEntity1:1" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!, - "testDate": self.dateFormatter.dateFromString("2000-01-01T00:00:00Z")!, + "testData": ("nil:TestEntity1:1" as NSString).data(using: String.Encoding.utf8.rawValue)!, + "testDate": self.dateFormatter.date(from: "2000-01-01T00:00:00Z")!, "skip_insert": "" ] ) XCTAssertNil(object) - XCTAssertEqual(transaction.fetchCount(From(TestEntity1)), 0) + XCTAssertEqual(transaction.fetchCount(From()), 0) } catch { @@ -70,20 +70,20 @@ class ImportTests: BaseTestDataTestCase { self.prepareStack { (stack) in - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in - let errorExpectation = self.expectationWithDescription("error") + let errorExpectation = self.expectation(withDescription: "error") do { let _ = try transaction.importObject( - Into(TestEntity1), + Into(), source: [ - "testBoolean": NSNumber(bool: true), - "testNumber": NSNumber(integer: 1), + "testBoolean": NSNumber(value: true), + "testNumber": NSNumber(value: 1), "testDecimal": NSDecimalNumber(string: "1"), "testString": "nil:TestEntity1:1", - "testData": ("nil:TestEntity1:1" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!, - "testDate": self.dateFormatter.dateFromString("2000-01-01T00:00:00Z")!, + "testData": ("nil:TestEntity1:1" as NSString).data(using: String.Encoding.utf8.rawValue)!, + "testDate": self.dateFormatter.date(from: "2000-01-01T00:00:00Z")!, "throw_on_insert": "" ] ) @@ -92,9 +92,9 @@ class ImportTests: BaseTestDataTestCase { catch _ as TestInsertError { errorExpectation.fulfill() - XCTAssertEqual(transaction.fetchCount(From(TestEntity1)), 1) + XCTAssertEqual(transaction.fetchCount(From()), 1) - let object = transaction.fetchOne(From(TestEntity1)) + let object = transaction.fetchOne(From()) XCTAssertNotNil(object) XCTAssertNil(object?.testEntityID) XCTAssertNil(object?.testBoolean) @@ -119,50 +119,50 @@ class ImportTests: BaseTestDataTestCase { self.prepareStack { (stack) in - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in do { let object = try transaction.importObject( - Into(TestEntity1), + Into(), source: [ - "testBoolean": NSNumber(bool: true), - "testNumber": NSNumber(integer: 1), + "testBoolean": NSNumber(value: true), + "testNumber": NSNumber(value: 1), "testDecimal": NSDecimalNumber(string: "1"), "testString": "nil:TestEntity1:1", - "testData": ("nil:TestEntity1:1" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!, - "testDate": self.dateFormatter.dateFromString("2000-01-01T00:00:00Z")! + "testData": ("nil:TestEntity1:1" as NSString).data(using: String.Encoding.utf8.rawValue)!, + "testDate": self.dateFormatter.date(from: "2000-01-01T00:00:00Z")! ] ) XCTAssertNotNil(object) - XCTAssertEqual(transaction.fetchCount(From(TestEntity1)), 1) + XCTAssertEqual(transaction.fetchCount(From()), 1) XCTAssertNil(object?.testEntityID) - XCTAssertEqual(object?.testBoolean, NSNumber(bool: true)) - XCTAssertEqual(object?.testNumber, NSNumber(integer: 1)) + XCTAssertEqual(object?.testBoolean, NSNumber(value: true)) + XCTAssertEqual(object?.testNumber, NSNumber(value: 1)) XCTAssertEqual(object?.testDecimal, NSDecimalNumber(string: "1")) XCTAssertEqual(object?.testString, "nil:TestEntity1:1") - XCTAssertEqual(object?.testData, ("nil:TestEntity1:1" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!) - XCTAssertEqual(object?.testDate, self.dateFormatter.dateFromString("2000-01-01T00:00:00Z")!) + XCTAssertEqual(object?.testData, ("nil:TestEntity1:1" as NSString).data(using: String.Encoding.utf8.rawValue)!) + XCTAssertEqual(object?.testDate, self.dateFormatter.date(from: "2000-01-01T00:00:00Z")!) try transaction.importObject( object!, source: [ - "testBoolean": NSNumber(bool: false), - "testNumber": NSNumber(integer: 2), + "testBoolean": NSNumber(value: false), + "testNumber": NSNumber(value: 2), "testDecimal": NSDecimalNumber(string: "2"), "testString": "nil:TestEntity1:2", - "testData": ("nil:TestEntity1:2" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!, - "testDate": self.dateFormatter.dateFromString("2000-01-02T00:00:00Z")! + "testData": ("nil:TestEntity1:2" as NSString).data(using: String.Encoding.utf8.rawValue)!, + "testDate": self.dateFormatter.date(from: "2000-01-02T00:00:00Z")! ] ) - XCTAssertEqual(transaction.fetchCount(From(TestEntity1)), 1) + XCTAssertEqual(transaction.fetchCount(From()), 1) XCTAssertNil(object?.testEntityID) - XCTAssertEqual(object?.testBoolean, NSNumber(bool: false)) - XCTAssertEqual(object?.testNumber, NSNumber(integer: 2)) + XCTAssertEqual(object?.testBoolean, NSNumber(value: false)) + XCTAssertEqual(object?.testNumber, NSNumber(value: 2)) XCTAssertEqual(object?.testDecimal, NSDecimalNumber(string: "2")) XCTAssertEqual(object?.testString, "nil:TestEntity1:2") - XCTAssertEqual(object?.testData, ("nil:TestEntity1:2" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!) - XCTAssertEqual(object?.testDate, self.dateFormatter.dateFromString("2000-01-02T00:00:00Z")!) + XCTAssertEqual(object?.testData, ("nil:TestEntity1:2" as NSString).data(using: String.Encoding.utf8.rawValue)!) + XCTAssertEqual(object?.testDate, self.dateFormatter.date(from: "2000-01-02T00:00:00Z")!) } catch { @@ -178,35 +178,35 @@ class ImportTests: BaseTestDataTestCase { self.prepareStack { (stack) in - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in do { let sourceArray: [TestEntity1.ImportSource] = [ [ - "testBoolean": NSNumber(bool: true), - "testNumber": NSNumber(integer: 1), + "testBoolean": NSNumber(value: true), + "testNumber": NSNumber(value: 1), "testDecimal": NSDecimalNumber(string: "1"), "testString": "nil:TestEntity1:1", - "testData": ("nil:TestEntity1:1" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!, - "testDate": self.dateFormatter.dateFromString("2000-01-01T00:00:00Z")!, + "testData": ("nil:TestEntity1:1" as NSString).data(using: String.Encoding.utf8.rawValue)!, + "testDate": self.dateFormatter.date(from: "2000-01-01T00:00:00Z")!, "skip_insert": "" ], [ - "testBoolean": NSNumber(bool: false), - "testNumber": NSNumber(integer: 2), + "testBoolean": NSNumber(value: false), + "testNumber": NSNumber(value: 2), "testDecimal": NSDecimalNumber(string: "2"), "testString": "nil:TestEntity1:2", - "testData": ("nil:TestEntity1:2" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!, - "testDate": self.dateFormatter.dateFromString("2000-01-02T00:00:00Z")! + "testData": ("nil:TestEntity1:2" as NSString).data(using: String.Encoding.utf8.rawValue)!, + "testDate": self.dateFormatter.date(from: "2000-01-02T00:00:00Z")! ] ] let objects = try transaction.importObjects( - Into(TestEntity1), + Into(), sourceArray: sourceArray ) XCTAssertEqual(objects.count, 1) - XCTAssertEqual(transaction.fetchCount(From(TestEntity1)), 1) + XCTAssertEqual(transaction.fetchCount(From()), 1) let object = objects[0] let dictionary = sourceArray[1] @@ -232,32 +232,32 @@ class ImportTests: BaseTestDataTestCase { self.prepareStack { (stack) in - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in - let errorExpectation = self.expectationWithDescription("error") + let errorExpectation = self.expectation(withDescription: "error") do { let sourceArray: [TestEntity1.ImportSource] = [ [ - "testBoolean": NSNumber(bool: true), - "testNumber": NSNumber(integer: 1), + "testBoolean": NSNumber(value: true), + "testNumber": NSNumber(value: 1), "testDecimal": NSDecimalNumber(string: "1"), "testString": "nil:TestEntity1:1", - "testData": ("nil:TestEntity1:1" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!, - "testDate": self.dateFormatter.dateFromString("2000-01-01T00:00:00Z")!, + "testData": ("nil:TestEntity1:1" as NSString).data(using: String.Encoding.utf8.rawValue)!, + "testDate": self.dateFormatter.date(from: "2000-01-01T00:00:00Z")!, "throw_on_insert": "" ], [ - "testBoolean": NSNumber(bool: false), - "testNumber": NSNumber(integer: 2), + "testBoolean": NSNumber(value: false), + "testNumber": NSNumber(value: 2), "testDecimal": NSDecimalNumber(string: "2"), "testString": "nil:TestEntity1:2", - "testData": ("nil:TestEntity1:2" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!, - "testDate": self.dateFormatter.dateFromString("2000-01-02T00:00:00Z")! + "testData": ("nil:TestEntity1:2" as NSString).data(using: String.Encoding.utf8.rawValue)!, + "testDate": self.dateFormatter.date(from: "2000-01-02T00:00:00Z")! ] ] let _ = try transaction.importObjects( - Into(TestEntity1), + Into(), sourceArray: sourceArray ) XCTFail() @@ -265,9 +265,9 @@ class ImportTests: BaseTestDataTestCase { catch _ as TestInsertError { errorExpectation.fulfill() - XCTAssertEqual(transaction.fetchCount(From(TestEntity1)), 1) + XCTAssertEqual(transaction.fetchCount(From()), 1) - let object = transaction.fetchOne(From(TestEntity1)) + let object = transaction.fetchOne(From()) XCTAssertNotNil(object) XCTAssertNil(object?.testEntityID) XCTAssertNil(object?.testBoolean) @@ -292,34 +292,34 @@ class ImportTests: BaseTestDataTestCase { self.prepareStack { (stack) in - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in do { let sourceArray: [TestEntity1.ImportSource] = [ [ - "testBoolean": NSNumber(bool: true), - "testNumber": NSNumber(integer: 1), + "testBoolean": NSNumber(value: true), + "testNumber": NSNumber(value: 1), "testDecimal": NSDecimalNumber(string: "1"), "testString": "nil:TestEntity1:1", - "testData": ("nil:TestEntity1:1" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!, - "testDate": self.dateFormatter.dateFromString("2000-01-01T00:00:00Z")! + "testData": ("nil:TestEntity1:1" as NSString).data(using: String.Encoding.utf8.rawValue)!, + "testDate": self.dateFormatter.date(from: "2000-01-01T00:00:00Z")! ], [ - "testBoolean": NSNumber(bool: false), - "testNumber": NSNumber(integer: 2), + "testBoolean": NSNumber(value: false), + "testNumber": NSNumber(value: 2), "testDecimal": NSDecimalNumber(string: "2"), "testString": "nil:TestEntity1:2", - "testData": ("nil:TestEntity1:2" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!, - "testDate": self.dateFormatter.dateFromString("2000-01-02T00:00:00Z")! + "testData": ("nil:TestEntity1:2" as NSString).data(using: String.Encoding.utf8.rawValue)!, + "testDate": self.dateFormatter.date(from: "2000-01-02T00:00:00Z")! ] ] let objects = try transaction.importObjects( - Into(TestEntity1), + Into(), sourceArray: sourceArray ) XCTAssertEqual(objects.count, sourceArray.count) - XCTAssertEqual(transaction.fetchCount(From(TestEntity1)), 2) + XCTAssertEqual(transaction.fetchCount(From()), 2) for i in 0 ..< sourceArray.count { @@ -351,25 +351,25 @@ class ImportTests: BaseTestDataTestCase { self.prepareTestDataForStack(stack) - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in do { let object = try transaction.importUniqueObject( - Into(TestEntity1), + Into(), source: [ - "testEntityID": NSNumber(integer: 106), - "testBoolean": NSNumber(bool: true), - "testNumber": NSNumber(integer: 6), + "testEntityID": NSNumber(value: 106), + "testBoolean": NSNumber(value: true), + "testNumber": NSNumber(value: 6), "testDecimal": NSDecimalNumber(string: "6"), "testString": "nil:TestEntity1:6", - "testData": ("nil:TestEntity1:6" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!, - "testDate": self.dateFormatter.dateFromString("2000-01-06T00:00:00Z")!, + "testData": ("nil:TestEntity1:6" as NSString).data(using: String.Encoding.utf8.rawValue)!, + "testDate": self.dateFormatter.date(from: "2000-01-06T00:00:00Z")!, "skip_insert": "" ] ) XCTAssertNil(object) - XCTAssertEqual(transaction.fetchCount(From(TestEntity1)), 5) + XCTAssertEqual(transaction.fetchCount(From()), 5) } catch { @@ -378,33 +378,33 @@ class ImportTests: BaseTestDataTestCase { do { let object = try transaction.importUniqueObject( - Into(TestEntity1), + Into(), source: [ - "testEntityID": NSNumber(integer: 105), - "testBoolean": NSNumber(bool: false), - "testNumber": NSNumber(integer: 6), + "testEntityID": NSNumber(value: 105), + "testBoolean": NSNumber(value: false), + "testNumber": NSNumber(value: 6), "testDecimal": NSDecimalNumber(string: "6"), "testString": "nil:TestEntity1:6", - "testData": ("nil:TestEntity1:6" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!, - "testDate": self.dateFormatter.dateFromString("2000-01-06T00:00:00Z")!, + "testData": ("nil:TestEntity1:6" as NSString).data(using: String.Encoding.utf8.rawValue)!, + "testDate": self.dateFormatter.date(from: "2000-01-06T00:00:00Z")!, "skip_update": "" ] ) XCTAssertNil(object) - XCTAssertEqual(transaction.fetchCount(From(TestEntity1)), 5) + XCTAssertEqual(transaction.fetchCount(From()), 5) - let existingObjects = transaction.fetchAll(From(TestEntity1), Where("testEntityID", isEqualTo: 105)) + let existingObjects = transaction.fetchAll(From(), Where("testEntityID", isEqualTo: 105)) XCTAssertNotNil(existingObjects) XCTAssertEqual(existingObjects?.count, 1) let existingObject = existingObjects?[0] - XCTAssertEqual(existingObject?.testEntityID, NSNumber(integer: 105)) - XCTAssertEqual(existingObject?.testBoolean, NSNumber(bool: true)) - XCTAssertEqual(existingObject?.testNumber, NSNumber(integer: 5)) + XCTAssertEqual(existingObject?.testEntityID, NSNumber(value: 105)) + XCTAssertEqual(existingObject?.testBoolean, NSNumber(value: true)) + XCTAssertEqual(existingObject?.testNumber, NSNumber(value: 5)) XCTAssertEqual(existingObject?.testDecimal, NSDecimalNumber(string: "5")) XCTAssertEqual(existingObject?.testString, "nil:TestEntity1:5") - XCTAssertEqual(existingObject?.testData, ("nil:TestEntity1:5" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!) - XCTAssertEqual(existingObject?.testDate, self.dateFormatter.dateFromString("2000-01-05T00:00:00Z")!) + XCTAssertEqual(existingObject?.testData, ("nil:TestEntity1:5" as NSString).data(using: String.Encoding.utf8.rawValue)!) + XCTAssertEqual(existingObject?.testDate, self.dateFormatter.date(from: "2000-01-05T00:00:00Z")!) } catch { @@ -421,23 +421,23 @@ class ImportTests: BaseTestDataTestCase { self.prepareTestDataForStack(stack) - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in do { - let errorExpectation = self.expectationWithDescription("error") + let errorExpectation = self.expectation(withDescription: "error") do { let _ = try transaction.importUniqueObject( - Into(TestEntity1), + Into(), source: [ - "testEntityID": NSNumber(integer: 106), - "testBoolean": NSNumber(bool: true), - "testNumber": NSNumber(integer: 6), + "testEntityID": NSNumber(value: 106), + "testBoolean": NSNumber(value: true), + "testNumber": NSNumber(value: 6), "testDecimal": NSDecimalNumber(string: "6"), "testString": "nil:TestEntity1:6", - "testData": ("nil:TestEntity1:6" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!, - "testDate": self.dateFormatter.dateFromString("2000-01-06T00:00:00Z")!, + "testData": ("nil:TestEntity1:6" as NSString).data(using: String.Encoding.utf8.rawValue)!, + "testDate": self.dateFormatter.date(from: "2000-01-06T00:00:00Z")!, "throw_on_insert": "" ] ) @@ -446,11 +446,11 @@ class ImportTests: BaseTestDataTestCase { catch _ as TestInsertError { errorExpectation.fulfill() - XCTAssertEqual(transaction.fetchCount(From(TestEntity1)), 6) + XCTAssertEqual(transaction.fetchCount(From()), 6) - let object = transaction.fetchOne(From(TestEntity1), Where("testEntityID", isEqualTo: 106)) + let object = transaction.fetchOne(From(), Where("testEntityID", isEqualTo: 106)) XCTAssertNotNil(object) - XCTAssertEqual(object?.testEntityID, NSNumber(integer: 106)) + XCTAssertEqual(object?.testEntityID, NSNumber(value: 106)) XCTAssertNil(object?.testBoolean) XCTAssertNil(object?.testNumber) XCTAssertNil(object?.testDecimal) @@ -466,19 +466,19 @@ class ImportTests: BaseTestDataTestCase { } do { - let errorExpectation = self.expectationWithDescription("error") + let errorExpectation = self.expectation(withDescription: "error") do { let _ = try transaction.importUniqueObject( - Into(TestEntity1), + Into(), source: [ - "testEntityID": NSNumber(integer: 105), - "testBoolean": NSNumber(bool: false), - "testNumber": NSNumber(integer: 6), + "testEntityID": NSNumber(value: 105), + "testBoolean": NSNumber(value: false), + "testNumber": NSNumber(value: 6), "testDecimal": NSDecimalNumber(string: "6"), "testString": "nil:TestEntity1:6", - "testData": ("nil:TestEntity1:6" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!, - "testDate": self.dateFormatter.dateFromString("2000-01-06T00:00:00Z")!, + "testData": ("nil:TestEntity1:6" as NSString).data(using: String.Encoding.utf8.rawValue)!, + "testDate": self.dateFormatter.date(from: "2000-01-06T00:00:00Z")!, "throw_on_update": "" ] ) @@ -487,21 +487,21 @@ class ImportTests: BaseTestDataTestCase { catch _ as TestUpdateError { errorExpectation.fulfill() - XCTAssertEqual(transaction.fetchCount(From(TestEntity1)), 6) + XCTAssertEqual(transaction.fetchCount(From()), 6) - let existingObjects = transaction.fetchAll(From(TestEntity1), Where("testEntityID", isEqualTo: 105)) + let existingObjects = transaction.fetchAll(From(), Where("testEntityID", isEqualTo: 105)) XCTAssertNotNil(existingObjects) XCTAssertEqual(existingObjects?.count, 1) let existingObject = existingObjects?[0] XCTAssertNotNil(existingObject) - XCTAssertEqual(existingObject?.testEntityID, NSNumber(integer: 105)) - XCTAssertEqual(existingObject?.testBoolean, NSNumber(bool: true)) - XCTAssertEqual(existingObject?.testNumber, NSNumber(integer: 5)) + XCTAssertEqual(existingObject?.testEntityID, NSNumber(value: 105)) + XCTAssertEqual(existingObject?.testBoolean, NSNumber(value: true)) + XCTAssertEqual(existingObject?.testNumber, NSNumber(value: 5)) XCTAssertEqual(existingObject?.testDecimal, NSDecimalNumber(string: "5")) XCTAssertEqual(existingObject?.testString, "nil:TestEntity1:5") - XCTAssertEqual(existingObject?.testData, ("nil:TestEntity1:5" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!) - XCTAssertEqual(existingObject?.testDate, self.dateFormatter.dateFromString("2000-01-05T00:00:00Z")!) + XCTAssertEqual(existingObject?.testData, ("nil:TestEntity1:5" as NSString).data(using: String.Encoding.utf8.rawValue)!) + XCTAssertEqual(existingObject?.testDate, self.dateFormatter.date(from: "2000-01-05T00:00:00Z")!) } catch { @@ -521,32 +521,32 @@ class ImportTests: BaseTestDataTestCase { self.prepareTestDataForStack(stack) - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in do { let object = try transaction.importUniqueObject( - Into(TestEntity1), + Into(), source: [ - "testEntityID": NSNumber(integer: 106), - "testBoolean": NSNumber(bool: true), - "testNumber": NSNumber(integer: 6), + "testEntityID": NSNumber(value: 106), + "testBoolean": NSNumber(value: true), + "testNumber": NSNumber(value: 6), "testDecimal": NSDecimalNumber(string: "6"), "testString": "nil:TestEntity1:6", - "testData": ("nil:TestEntity1:6" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!, - "testDate": self.dateFormatter.dateFromString("2000-01-06T00:00:00Z")! + "testData": ("nil:TestEntity1:6" as NSString).data(using: String.Encoding.utf8.rawValue)!, + "testDate": self.dateFormatter.date(from: "2000-01-06T00:00:00Z")! ] ) XCTAssertNotNil(object) - XCTAssertEqual(transaction.fetchCount(From(TestEntity1)), 6) + XCTAssertEqual(transaction.fetchCount(From()), 6) - XCTAssertEqual(object?.testEntityID, NSNumber(integer: 106)) - XCTAssertEqual(object?.testBoolean, NSNumber(bool: true)) - XCTAssertEqual(object?.testNumber, NSNumber(integer: 6)) + XCTAssertEqual(object?.testEntityID, NSNumber(value: 106)) + XCTAssertEqual(object?.testBoolean, NSNumber(value: true)) + XCTAssertEqual(object?.testNumber, NSNumber(value: 6)) XCTAssertEqual(object?.testDecimal, NSDecimalNumber(string: "6")) XCTAssertEqual(object?.testString, "nil:TestEntity1:6") - XCTAssertEqual(object?.testData, ("nil:TestEntity1:6" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!) - XCTAssertEqual(object?.testDate, self.dateFormatter.dateFromString("2000-01-06T00:00:00Z")!) + XCTAssertEqual(object?.testData, ("nil:TestEntity1:6" as NSString).data(using: String.Encoding.utf8.rawValue)!) + XCTAssertEqual(object?.testDate, self.dateFormatter.date(from: "2000-01-06T00:00:00Z")!) } catch { @@ -555,29 +555,29 @@ class ImportTests: BaseTestDataTestCase { do { let object = try transaction.importUniqueObject( - Into(TestEntity1), + Into(), source: [ - "testEntityID": NSNumber(integer: 106), - "testBoolean": NSNumber(bool: false), - "testNumber": NSNumber(integer: 7), + "testEntityID": NSNumber(value: 106), + "testBoolean": NSNumber(value: false), + "testNumber": NSNumber(value: 7), "testDecimal": NSDecimalNumber(string: "7"), "testString": "nil:TestEntity1:7", - "testData": ("nil:TestEntity1:7" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!, - "testDate": self.dateFormatter.dateFromString("2000-01-07T00:00:00Z")!, + "testData": ("nil:TestEntity1:7" as NSString).data(using: String.Encoding.utf8.rawValue)!, + "testDate": self.dateFormatter.date(from: "2000-01-07T00:00:00Z")!, ] ) XCTAssertNotNil(object) - XCTAssertEqual(transaction.fetchCount(From(TestEntity1)), 6) + XCTAssertEqual(transaction.fetchCount(From()), 6) - XCTAssertEqual(object?.testEntityID, NSNumber(integer: 106)) - XCTAssertEqual(object?.testBoolean, NSNumber(bool: false)) - XCTAssertEqual(object?.testNumber, NSNumber(integer: 7)) + XCTAssertEqual(object?.testEntityID, NSNumber(value: 106)) + XCTAssertEqual(object?.testBoolean, NSNumber(value: false)) + XCTAssertEqual(object?.testNumber, NSNumber(value: 7)) XCTAssertEqual(object?.testDecimal, NSDecimalNumber(string: "7")) XCTAssertEqual(object?.testString, "nil:TestEntity1:7") - XCTAssertEqual(object?.testData, ("nil:TestEntity1:7" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!) - XCTAssertEqual(object?.testDate, self.dateFormatter.dateFromString("2000-01-07T00:00:00Z")!) + XCTAssertEqual(object?.testData, ("nil:TestEntity1:7" as NSString).data(using: String.Encoding.utf8.rawValue)!) + XCTAssertEqual(object?.testDate, self.dateFormatter.date(from: "2000-01-07T00:00:00Z")!) - let existingObjects = transaction.fetchAll(From(TestEntity1), Where("testEntityID", isEqualTo: 106)) + let existingObjects = transaction.fetchAll(From(), Where("testEntityID", isEqualTo: 106)) XCTAssertNotNil(existingObjects) XCTAssertEqual(existingObjects?.count, 1) @@ -600,37 +600,37 @@ class ImportTests: BaseTestDataTestCase { self.prepareTestDataForStack(stack) - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in do { let sourceArray: [TestEntity1.ImportSource] = [ [ - "testEntityID": NSNumber(integer: 106), - "testBoolean": NSNumber(bool: true), - "testNumber": NSNumber(integer: 6), + "testEntityID": NSNumber(value: 106), + "testBoolean": NSNumber(value: true), + "testNumber": NSNumber(value: 6), "testDecimal": NSDecimalNumber(string: "6"), "testString": "nil:TestEntity1:6", - "testData": ("nil:TestEntity1:6" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!, - "testDate": self.dateFormatter.dateFromString("2000-01-06T00:00:00Z")!, + "testData": ("nil:TestEntity1:6" as NSString).data(using: String.Encoding.utf8.rawValue)!, + "testDate": self.dateFormatter.date(from: "2000-01-06T00:00:00Z")!, "skip_insert": "" ], [ - "testEntityID": NSNumber(integer: 107), - "testBoolean": NSNumber(bool: false), - "testNumber": NSNumber(integer: 7), + "testEntityID": NSNumber(value: 107), + "testBoolean": NSNumber(value: false), + "testNumber": NSNumber(value: 7), "testDecimal": NSDecimalNumber(string: "7"), "testString": "nil:TestEntity1:7", - "testData": ("nil:TestEntity1:7" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!, - "testDate": self.dateFormatter.dateFromString("2000-01-07T00:00:00Z")! + "testData": ("nil:TestEntity1:7" as NSString).data(using: String.Encoding.utf8.rawValue)!, + "testDate": self.dateFormatter.date(from: "2000-01-07T00:00:00Z")! ] ] let objects = try transaction.importUniqueObjects( - Into(TestEntity1), + Into(), sourceArray: sourceArray ) XCTAssertEqual(objects.count, 1) - XCTAssertEqual(transaction.fetchCount(From(TestEntity1)), 6) + XCTAssertEqual(transaction.fetchCount(From()), 6) let object = objects[0] let dictionary = sourceArray[1] @@ -658,34 +658,34 @@ class ImportTests: BaseTestDataTestCase { self.prepareTestDataForStack(stack) - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in - let errorExpectation = self.expectationWithDescription("error") + let errorExpectation = self.expectation(withDescription: "error") do { let sourceArray: [TestEntity1.ImportSource] = [ [ - "testEntityID": NSNumber(integer: 106), - "testBoolean": NSNumber(bool: true), - "testNumber": NSNumber(integer: 6), + "testEntityID": NSNumber(value: 106), + "testBoolean": NSNumber(value: true), + "testNumber": NSNumber(value: 6), "testDecimal": NSDecimalNumber(string: "6"), "testString": "nil:TestEntity1:6", - "testData": ("nil:TestEntity1:6" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!, - "testDate": self.dateFormatter.dateFromString("2000-01-06T00:00:00Z")!, + "testData": ("nil:TestEntity1:6" as NSString).data(using: String.Encoding.utf8.rawValue)!, + "testDate": self.dateFormatter.date(from: "2000-01-06T00:00:00Z")!, "throw_on_id": "" ], [ - "testEntityID": NSNumber(integer: 107), - "testBoolean": NSNumber(bool: false), - "testNumber": NSNumber(integer: 7), + "testEntityID": NSNumber(value: 107), + "testBoolean": NSNumber(value: false), + "testNumber": NSNumber(value: 7), "testDecimal": NSDecimalNumber(string: "7"), "testString": "nil:TestEntity1:7", - "testData": ("nil:TestEntity1:7" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!, - "testDate": self.dateFormatter.dateFromString("2000-01-07T00:00:00Z")! + "testData": ("nil:TestEntity1:7" as NSString).data(using: String.Encoding.utf8.rawValue)!, + "testDate": self.dateFormatter.date(from: "2000-01-07T00:00:00Z")! ] ] let _ = try transaction.importUniqueObjects( - Into(TestEntity1), + Into(), sourceArray: sourceArray ) XCTFail() @@ -693,10 +693,10 @@ class ImportTests: BaseTestDataTestCase { catch _ as TestIDError { errorExpectation.fulfill() - XCTAssertEqual(transaction.fetchCount(From(TestEntity1)), 5) + XCTAssertEqual(transaction.fetchCount(From()), 5) - XCTAssertNil(transaction.fetchOne(From(TestEntity1), Where("testEntityID", isEqualTo: 106))) - XCTAssertNil(transaction.fetchOne(From(TestEntity1), Where("testEntityID", isEqualTo: 107))) + XCTAssertNil(transaction.fetchOne(From(), Where("testEntityID", isEqualTo: 106))) + XCTAssertNil(transaction.fetchOne(From(), Where("testEntityID", isEqualTo: 107))) } catch { @@ -705,34 +705,34 @@ class ImportTests: BaseTestDataTestCase { self.checkExpectationsImmediately() transaction.context.reset() } - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in - let errorExpectation = self.expectationWithDescription("error") + let errorExpectation = self.expectation(withDescription: "error") do { let sourceArray: [TestEntity1.ImportSource] = [ [ - "testEntityID": NSNumber(integer: 106), - "testBoolean": NSNumber(bool: true), - "testNumber": NSNumber(integer: 6), + "testEntityID": NSNumber(value: 106), + "testBoolean": NSNumber(value: true), + "testNumber": NSNumber(value: 6), "testDecimal": NSDecimalNumber(string: "6"), "testString": "nil:TestEntity1:6", - "testData": ("nil:TestEntity1:6" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!, - "testDate": self.dateFormatter.dateFromString("2000-01-06T00:00:00Z")!, + "testData": ("nil:TestEntity1:6" as NSString).data(using: String.Encoding.utf8.rawValue)!, + "testDate": self.dateFormatter.date(from: "2000-01-06T00:00:00Z")!, "throw_on_insert": "" ], [ - "testEntityID": NSNumber(integer: 107), - "testBoolean": NSNumber(bool: false), - "testNumber": NSNumber(integer: 7), + "testEntityID": NSNumber(value: 107), + "testBoolean": NSNumber(value: false), + "testNumber": NSNumber(value: 7), "testDecimal": NSDecimalNumber(string: "7"), "testString": "nil:TestEntity1:7", - "testData": ("nil:TestEntity1:7" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!, - "testDate": self.dateFormatter.dateFromString("2000-01-07T00:00:00Z")! + "testData": ("nil:TestEntity1:7" as NSString).data(using: String.Encoding.utf8.rawValue)!, + "testDate": self.dateFormatter.date(from: "2000-01-07T00:00:00Z")! ] ] let _ = try transaction.importUniqueObjects( - Into(TestEntity1), + Into(), sourceArray: sourceArray ) XCTFail() @@ -741,9 +741,9 @@ class ImportTests: BaseTestDataTestCase { errorExpectation.fulfill() - let object = transaction.fetchOne(From(TestEntity1), Where("testEntityID", isEqualTo: 106)) + let object = transaction.fetchOne(From(), Where("testEntityID", isEqualTo: 106)) XCTAssertNotNil(object) - XCTAssertEqual(object?.testEntityID, NSNumber(integer: 106)) + XCTAssertEqual(object?.testEntityID, NSNumber(value: 106)) XCTAssertNil(object?.testBoolean) XCTAssertNil(object?.testNumber) XCTAssertNil(object?.testDecimal) @@ -758,25 +758,25 @@ class ImportTests: BaseTestDataTestCase { self.checkExpectationsImmediately() transaction.context.reset() } - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in - let errorExpectation = self.expectationWithDescription("error") + let errorExpectation = self.expectation(withDescription: "error") do { let sourceArray: [TestEntity1.ImportSource] = [ [ - "testEntityID": NSNumber(integer: 105), - "testBoolean": NSNumber(bool: false), - "testNumber": NSNumber(integer: 6), + "testEntityID": NSNumber(value: 105), + "testBoolean": NSNumber(value: false), + "testNumber": NSNumber(value: 6), "testDecimal": NSDecimalNumber(string: "6"), "testString": "nil:TestEntity1:6", - "testData": ("nil:TestEntity1:6" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!, - "testDate": self.dateFormatter.dateFromString("2000-01-06T00:00:00Z")!, + "testData": ("nil:TestEntity1:6" as NSString).data(using: String.Encoding.utf8.rawValue)!, + "testDate": self.dateFormatter.date(from: "2000-01-06T00:00:00Z")!, "throw_on_update": "" ] ] let _ = try transaction.importUniqueObjects( - Into(TestEntity1), + Into(), sourceArray: sourceArray ) XCTFail() @@ -784,19 +784,19 @@ class ImportTests: BaseTestDataTestCase { catch _ as TestUpdateError { errorExpectation.fulfill() - XCTAssertEqual(transaction.fetchCount(From(TestEntity1)), 5) + XCTAssertEqual(transaction.fetchCount(From()), 5) - let object = transaction.fetchOne(From(TestEntity1), Where("testEntityID", isEqualTo: 105)) + let object = transaction.fetchOne(From(), Where("testEntityID", isEqualTo: 105)) XCTAssertNotNil(object) - XCTAssertEqual(object?.testEntityID, NSNumber(integer: 105)) - XCTAssertEqual(object?.testBoolean, NSNumber(bool: true)) - XCTAssertEqual(object?.testNumber, NSNumber(integer: 5)) + XCTAssertEqual(object?.testEntityID, NSNumber(value: 105)) + XCTAssertEqual(object?.testBoolean, NSNumber(value: true)) + XCTAssertEqual(object?.testNumber, NSNumber(value: 5)) XCTAssertEqual(object?.testDecimal, NSDecimalNumber(string: "5")) XCTAssertEqual(object?.testString, "nil:TestEntity1:5") - XCTAssertEqual(object?.testData, ("nil:TestEntity1:5" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!) - XCTAssertEqual(object?.testDate, self.dateFormatter.dateFromString("2000-01-05T00:00:00Z")!) + XCTAssertEqual(object?.testData, ("nil:TestEntity1:5" as NSString).data(using: String.Encoding.utf8.rawValue)!) + XCTAssertEqual(object?.testDate, self.dateFormatter.date(from: "2000-01-05T00:00:00Z")!) - let existingObjects = transaction.fetchAll(From(TestEntity1), Where("testEntityID", isEqualTo: 105)) + let existingObjects = transaction.fetchAll(From(), Where("testEntityID", isEqualTo: 105)) XCTAssertNotNil(existingObjects) XCTAssertEqual(existingObjects?.count, 1) @@ -820,36 +820,36 @@ class ImportTests: BaseTestDataTestCase { self.prepareTestDataForStack(stack) - stack.beginSynchronous { (transaction) in + _ = stack.beginSynchronous { (transaction) in do { let sourceArray: [TestEntity1.ImportSource] = [ [ - "testEntityID": NSNumber(integer: 105), - "testBoolean": NSNumber(bool: false), - "testNumber": NSNumber(integer: 15), + "testEntityID": NSNumber(value: 105), + "testBoolean": NSNumber(value: false), + "testNumber": NSNumber(value: 15), "testDecimal": NSDecimalNumber(string: "15"), "testString": "nil:TestEntity1:15", - "testData": ("nil:TestEntity1:15" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!, - "testDate": self.dateFormatter.dateFromString("2000-01-15T00:00:00Z")! + "testData": ("nil:TestEntity1:15" as NSString).data(using: String.Encoding.utf8.rawValue)!, + "testDate": self.dateFormatter.date(from: "2000-01-15T00:00:00Z")! ], [ - "testEntityID": NSNumber(integer: 106), - "testBoolean": NSNumber(bool: false), - "testNumber": NSNumber(integer: 6), + "testEntityID": NSNumber(value: 106), + "testBoolean": NSNumber(value: false), + "testNumber": NSNumber(value: 6), "testDecimal": NSDecimalNumber(string: "6"), "testString": "nil:TestEntity1:6", - "testData": ("nil:TestEntity1:6" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!, - "testDate": self.dateFormatter.dateFromString("2000-01-06T00:00:00Z")! + "testData": ("nil:TestEntity1:6" as NSString).data(using: String.Encoding.utf8.rawValue)!, + "testDate": self.dateFormatter.date(from: "2000-01-06T00:00:00Z")! ] ] let objects = try transaction.importUniqueObjects( - Into(TestEntity1), + Into(), sourceArray: sourceArray ) XCTAssertEqual(objects.count, sourceArray.count) - XCTAssertEqual(transaction.fetchCount(From(TestEntity1)), 6) + XCTAssertEqual(transaction.fetchCount(From()), 6) for i in 0 ..< sourceArray.count { let object = objects[i] @@ -863,7 +863,7 @@ class ImportTests: BaseTestDataTestCase { XCTAssertEqual(object.testData, dictionary["testData"] as? NSData) XCTAssertEqual(object.testDate, dictionary["testDate"] as? NSDate) } - let existingObjects = transaction.fetchAll(From(TestEntity1), Where("testEntityID", isEqualTo: 105)) + let existingObjects = transaction.fetchAll(From(), Where("testEntityID", isEqualTo: 105)) XCTAssertNotNil(existingObjects) XCTAssertEqual(existingObjects?.count, 1) diff --git a/CoreStoreTests/IntoTests.swift b/CoreStoreTests/IntoTests.swift index ffa7481..d101476 100644 --- a/CoreStoreTests/IntoTests.swift +++ b/CoreStoreTests/IntoTests.swift @@ -58,7 +58,7 @@ final class IntoTests: XCTestCase { } do { - let into = Into(TestEntity1) + let into = Into() XCTAssert(into.entityClass === TestEntity1.self) XCTAssertNil(into.configuration) XCTAssertTrue(into.inferStoreIfPossible) @@ -108,14 +108,14 @@ final class IntoTests: XCTestCase { do { let into = Into() - XCTAssertEqual(into, Into(TestEntity1)) + XCTAssertEqual(into, Into()) XCTAssertEqual(into, Into(TestEntity1.self as AnyClass)) XCTAssertFalse(into == Into()) XCTAssertNotEqual(into, Into("Config1")) } do { - let into = Into(TestEntity1) + let into = Into() XCTAssertEqual(into, Into()) XCTAssertEqual(into, Into(TestEntity1.self as AnyClass)) XCTAssertFalse(into == Into()) @@ -125,7 +125,7 @@ final class IntoTests: XCTestCase { let into = Into(TestEntity1.self as AnyClass) XCTAssert(into == Into()) - XCTAssertEqual(into, Into(TestEntity1)) + XCTAssertEqual(into, Into(TestEntity1.self)) XCTAssertFalse(into == Into()) XCTAssertFalse(into == Into("Config1")) } diff --git a/CoreStoreTests/ListObserverTests.swift b/CoreStoreTests/ListObserverTests.swift index 7bc1bcf..81e73e7 100644 --- a/CoreStoreTests/ListObserverTests.swift +++ b/CoreStoreTests/ListObserverTests.swift @@ -42,9 +42,9 @@ class ListObserverTests: BaseTestDataTestCase { let observer = TestListObserver() let monitor = stack.monitorSectionedList( - From(TestEntity1), + From(), SectionBy("testBoolean"), - OrderBy(.Ascending("testBoolean"), .Ascending("testEntityID")) + OrderBy(.ascending("testBoolean"), .ascending("testEntityID")) ) monitor.addObserver(observer) @@ -54,13 +54,13 @@ class ListObserverTests: BaseTestDataTestCase { var events = 0 - let willChangeExpectation = self.expectationForNotification( - "listMonitorWillChange:", + let willChangeExpectation = self.expectation( + forNotification: "listMonitorWillChange:", object: observer, handler: { (note) -> Bool in XCTAssertEqual(events, 0) - XCTAssertEqual((note.userInfo ?? [:]), NSDictionary()) + XCTAssertEqual(((note as NSNotification).userInfo ?? [:]), NSDictionary()) defer { events += 1 @@ -68,14 +68,14 @@ class ListObserverTests: BaseTestDataTestCase { return events == 0 } ) - let didInsertSectionExpectation = self.expectationForNotification( - "listMonitor:didInsertSection:toSectionIndex:", + let didInsertSectionExpectation = self.expectation( + forNotification: "listMonitor:didInsertSection:toSectionIndex:", object: observer, handler: { (note) -> Bool in XCTAssertEqual(events, 1) XCTAssertEqual( - (note.userInfo ?? [:]), + ((note as NSNotification).userInfo ?? [:]), [ "sectionInfo": monitor.sectionInfoAtIndex(0), "sectionIndex": 0 @@ -88,14 +88,14 @@ class ListObserverTests: BaseTestDataTestCase { return events == 1 } ) - let didInsertObjectExpectation = self.expectationForNotification( - "listMonitor:didInsertObject:toIndexPath:", + let didInsertObjectExpectation = self.expectation( + forNotification: "listMonitor:didInsertObject:toIndexPath:", object: observer, handler: { (note) -> Bool in XCTAssertEqual(events, 2) - let userInfo = note.userInfo + let userInfo = (note as NSNotification).userInfo XCTAssertNotNil(userInfo) XCTAssertEqual( Set(((userInfo as? [String: AnyObject]) ?? [:]).keys), @@ -107,12 +107,12 @@ class ListObserverTests: BaseTestDataTestCase { XCTAssertEqual(indexPath?.row, 0) let object = userInfo?["object"] as? TestEntity1 - XCTAssertEqual(object?.testBoolean, NSNumber(bool: true)) - XCTAssertEqual(object?.testNumber, NSNumber(integer: 1)) + XCTAssertEqual(object?.testBoolean, NSNumber(value: true)) + XCTAssertEqual(object?.testNumber, NSNumber(value: 1)) XCTAssertEqual(object?.testDecimal, NSDecimalNumber(string: "1")) XCTAssertEqual(object?.testString, "nil:TestEntity1:1") - XCTAssertEqual(object?.testData, ("nil:TestEntity1:1" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!) - XCTAssertEqual(object?.testDate, self.dateFormatter.dateFromString("2000-01-01T00:00:00Z")!) + XCTAssertEqual(object?.testData, ("nil:TestEntity1:1" as NSString).data(using: String.Encoding.utf8.rawValue)!) + XCTAssertEqual(object?.testDate, self.dateFormatter.date(from: "2000-01-01T00:00:00Z")!) defer { events += 1 @@ -120,12 +120,12 @@ class ListObserverTests: BaseTestDataTestCase { return events == 2 } ) - let didChangeExpectation = self.expectationForNotification( - "listMonitorDidChange:", + let didChangeExpectation = self.expectation( + forNotification: "listMonitorDidChange:", object: observer, handler: { (note) -> Bool in - XCTAssertEqual((note.userInfo ?? [:]), NSDictionary()) + XCTAssertEqual(((note as NSNotification).userInfo ?? [:]), NSDictionary()) defer { events += 1 @@ -133,26 +133,26 @@ class ListObserverTests: BaseTestDataTestCase { return events == 3 } ) - let saveExpectation = self.expectationWithDescription("save") + let saveExpectation = self.expectation(withDescription: "save") stack.beginAsynchronous { (transaction) in - let object = transaction.create(Into(TestEntity1)) - object.testBoolean = NSNumber(bool: true) - object.testNumber = NSNumber(integer: 1) + let object = transaction.create(Into()) + object.testBoolean = NSNumber(value: true) + object.testNumber = NSNumber(value: 1) object.testDecimal = NSDecimalNumber(string: "1") object.testString = "nil:TestEntity1:1" - object.testData = ("nil:TestEntity1:1" as NSString).dataUsingEncoding(NSUTF8StringEncoding)! - object.testDate = self.dateFormatter.dateFromString("2000-01-01T00:00:00Z")! + object.testData = ("nil:TestEntity1:1" as NSString).data(using: String.Encoding.utf8.rawValue)! + object.testDate = self.dateFormatter.date(from: "2000-01-01T00:00:00Z")! transaction.commit { (result) in switch result { - case .Success(let hasChanges): + case .success(let hasChanges): XCTAssertTrue(hasChanges) saveExpectation.fulfill() - case .Failure: + case .failure: XCTFail() } } @@ -170,9 +170,9 @@ class ListObserverTests: BaseTestDataTestCase { let observer = TestListObserver() let monitor = stack.monitorSectionedList( - From(TestEntity1), + From(), SectionBy("testBoolean"), - OrderBy(.Ascending("testBoolean"), .Ascending("testEntityID")) + OrderBy(.ascending("testBoolean"), .ascending("testEntityID")) ) monitor.addObserver(observer) @@ -185,13 +185,13 @@ class ListObserverTests: BaseTestDataTestCase { var events = 0 - let willChangeExpectation = self.expectationForNotification( - "listMonitorWillChange:", + let willChangeExpectation = self.expectation( + forNotification: "listMonitorWillChange:", object: observer, handler: { (note) -> Bool in XCTAssertEqual(events, 0) - XCTAssertEqual((note.userInfo ?? [:]), NSDictionary()) + XCTAssertEqual(((note as NSNotification).userInfo ?? [:]), NSDictionary()) defer { events += 1 @@ -201,14 +201,14 @@ class ListObserverTests: BaseTestDataTestCase { ) for _ in 1 ... 2 { - let didUpdateObjectExpectation = self.expectationForNotification( - "listMonitor:didUpdateObject:atIndexPath:", + let didUpdateObjectExpectation = self.expectation( + forNotification: "listMonitor:didUpdateObject:atIndexPath:", object: observer, handler: { (note) -> Bool in XCTAssert(events == 1 || events == 2) - let userInfo = note.userInfo + let userInfo = (note as NSNotification).userInfo XCTAssertNotNil(userInfo) XCTAssertEqual( Set(((userInfo as? [String: AnyObject]) ?? [:]).keys), @@ -220,27 +220,27 @@ class ListObserverTests: BaseTestDataTestCase { switch object?.testEntityID { - case NSNumber(integer: 101)?: + case NSNumber(value: 101)?: XCTAssertEqual(indexPath?.section, 1) XCTAssertEqual(indexPath?.row, 0) - XCTAssertEqual(object?.testBoolean, NSNumber(bool: true)) - XCTAssertEqual(object?.testNumber, NSNumber(integer: 11)) + XCTAssertEqual(object?.testBoolean, NSNumber(value: true)) + XCTAssertEqual(object?.testNumber, NSNumber(value: 11)) XCTAssertEqual(object?.testDecimal, NSDecimalNumber(string: "11")) XCTAssertEqual(object?.testString, "nil:TestEntity1:11") - XCTAssertEqual(object?.testData, ("nil:TestEntity1:11" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!) - XCTAssertEqual(object?.testDate, self.dateFormatter.dateFromString("2000-01-11T00:00:00Z")!) + XCTAssertEqual(object?.testData, ("nil:TestEntity1:11" as NSString).data(using: String.Encoding.utf8.rawValue)!) + XCTAssertEqual(object?.testDate, self.dateFormatter.date(from: "2000-01-11T00:00:00Z")!) - case NSNumber(integer: 102)?: + case NSNumber(value: 102)?: XCTAssertEqual(indexPath?.section, 0) XCTAssertEqual(indexPath?.row, 0) - XCTAssertEqual(object?.testBoolean, NSNumber(bool: false)) - XCTAssertEqual(object?.testNumber, NSNumber(integer: 22)) + XCTAssertEqual(object?.testBoolean, NSNumber(value: false)) + XCTAssertEqual(object?.testNumber, NSNumber(value: 22)) XCTAssertEqual(object?.testDecimal, NSDecimalNumber(string: "22")) XCTAssertEqual(object?.testString, "nil:TestEntity1:22") - XCTAssertEqual(object?.testData, ("nil:TestEntity1:22" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!) - XCTAssertEqual(object?.testDate, self.dateFormatter.dateFromString("2000-01-22T00:00:00Z")!) + XCTAssertEqual(object?.testData, ("nil:TestEntity1:22" as NSString).data(using: String.Encoding.utf8.rawValue)!) + XCTAssertEqual(object?.testDate, self.dateFormatter.date(from: "2000-01-22T00:00:00Z")!) default: XCTFail() @@ -253,13 +253,13 @@ class ListObserverTests: BaseTestDataTestCase { } ) } - let didChangeExpectation = self.expectationForNotification( - "listMonitorDidChange:", + let didChangeExpectation = self.expectation( + forNotification: "listMonitorDidChange:", object: observer, handler: { (note) -> Bool in XCTAssertEqual(events, 3) - XCTAssertEqual((note.userInfo ?? [:]), NSDictionary()) + XCTAssertEqual(((note as NSNotification).userInfo ?? [:]), NSDictionary()) defer { events += 1 @@ -267,32 +267,32 @@ class ListObserverTests: BaseTestDataTestCase { return events == 3 } ) - let saveExpectation = self.expectationWithDescription("save") + let saveExpectation = self.expectation(withDescription: "save") stack.beginAsynchronous { (transaction) in if let object = transaction.fetchOne( - From(TestEntity1), + From(), Where("testEntityID", isEqualTo: 101)) { - object.testNumber = NSNumber(integer: 11) + object.testNumber = NSNumber(value: 11) object.testDecimal = NSDecimalNumber(string: "11") object.testString = "nil:TestEntity1:11" - object.testData = ("nil:TestEntity1:11" as NSString).dataUsingEncoding(NSUTF8StringEncoding)! - object.testDate = self.dateFormatter.dateFromString("2000-01-11T00:00:00Z")! + object.testData = ("nil:TestEntity1:11" as NSString).data(using: String.Encoding.utf8.rawValue)! + object.testDate = self.dateFormatter.date(from: "2000-01-11T00:00:00Z")! } else { XCTFail() } if let object = transaction.fetchOne( - From(TestEntity1), + From(), Where("testEntityID", isEqualTo: 102)) { - object.testNumber = NSNumber(integer: 22) + object.testNumber = NSNumber(value: 22) object.testDecimal = NSDecimalNumber(string: "22") object.testString = "nil:TestEntity1:22" - object.testData = ("nil:TestEntity1:22" as NSString).dataUsingEncoding(NSUTF8StringEncoding)! - object.testDate = self.dateFormatter.dateFromString("2000-01-22T00:00:00Z")! + object.testData = ("nil:TestEntity1:22" as NSString).data(using: String.Encoding.utf8.rawValue)! + object.testDate = self.dateFormatter.date(from: "2000-01-22T00:00:00Z")! } else { @@ -302,11 +302,11 @@ class ListObserverTests: BaseTestDataTestCase { switch result { - case .Success(let hasChanges): + case .success(let hasChanges): XCTAssertTrue(hasChanges) saveExpectation.fulfill() - case .Failure: + case .failure: XCTFail() } } @@ -324,21 +324,21 @@ class ListObserverTests: BaseTestDataTestCase { let observer = TestListObserver() let monitor = stack.monitorSectionedList( - From(TestEntity1), + From(), SectionBy("testBoolean"), - OrderBy(.Ascending("testBoolean"), .Ascending("testEntityID")) + OrderBy(.ascending("testBoolean"), .ascending("testEntityID")) ) monitor.addObserver(observer) var events = 0 - let willChangeExpectation = self.expectationForNotification( - "listMonitorWillChange:", + let willChangeExpectation = self.expectation( + forNotification: "listMonitorWillChange:", object: observer, handler: { (note) -> Bool in XCTAssertEqual(events, 0) - XCTAssertEqual((note.userInfo ?? [:]), NSDictionary()) + XCTAssertEqual(((note as NSNotification).userInfo ?? [:]), NSDictionary()) defer { events += 1 @@ -346,14 +346,14 @@ class ListObserverTests: BaseTestDataTestCase { return events == 0 } ) - let didMoveObjectExpectation = self.expectationForNotification( - "listMonitor:didMoveObject:fromIndexPath:toIndexPath:", + let didMoveObjectExpectation = self.expectation( + forNotification: "listMonitor:didMoveObject:fromIndexPath:toIndexPath:", object: observer, handler: { (note) -> Bool in XCTAssertEqual(events, 1) - let userInfo = note.userInfo + let userInfo = (note as NSNotification).userInfo XCTAssertNotNil(userInfo) XCTAssertEqual( Set(((userInfo as? [String: AnyObject]) ?? [:]).keys), @@ -369,8 +369,8 @@ class ListObserverTests: BaseTestDataTestCase { XCTAssertEqual(toIndexPath?.row, 1) let object = userInfo?["object"] as? TestEntity1 - XCTAssertEqual(object?.testEntityID, NSNumber(integer: 102)) - XCTAssertEqual(object?.testBoolean, NSNumber(bool: true)) + XCTAssertEqual(object?.testEntityID, NSNumber(value: 102)) + XCTAssertEqual(object?.testBoolean, NSNumber(value: true)) defer { @@ -379,13 +379,13 @@ class ListObserverTests: BaseTestDataTestCase { return events == 1 } ) - let didChangeExpectation = self.expectationForNotification( - "listMonitorDidChange:", + let didChangeExpectation = self.expectation( + forNotification: "listMonitorDidChange:", object: observer, handler: { (note) -> Bool in XCTAssertEqual(events, 2) - XCTAssertEqual((note.userInfo ?? [:]), NSDictionary()) + XCTAssertEqual(((note as NSNotification).userInfo ?? [:]), NSDictionary()) defer { events += 1 @@ -393,14 +393,14 @@ class ListObserverTests: BaseTestDataTestCase { return events == 2 } ) - let saveExpectation = self.expectationWithDescription("save") + let saveExpectation = self.expectation(withDescription: "save") stack.beginAsynchronous { (transaction) in if let object = transaction.fetchOne( - From(TestEntity1), + From(), Where("testEntityID", isEqualTo: 102)) { - object.testBoolean = NSNumber(bool: true) + object.testBoolean = NSNumber(value: true) } else { @@ -410,11 +410,11 @@ class ListObserverTests: BaseTestDataTestCase { switch result { - case .Success(let hasChanges): + case .success(let hasChanges): XCTAssertTrue(hasChanges) saveExpectation.fulfill() - case .Failure: + case .failure: XCTFail() } } @@ -432,21 +432,21 @@ class ListObserverTests: BaseTestDataTestCase { let observer = TestListObserver() let monitor = stack.monitorSectionedList( - From(TestEntity1), + From(), SectionBy("testBoolean"), - OrderBy(.Ascending("testBoolean"), .Ascending("testEntityID")) + OrderBy(.ascending("testBoolean"), .ascending("testEntityID")) ) monitor.addObserver(observer) var events = 0 - let willChangeExpectation = self.expectationForNotification( - "listMonitorWillChange:", + let willChangeExpectation = self.expectation( + forNotification: "listMonitorWillChange:", object: observer, handler: { (note) -> Bool in XCTAssertEqual(events, 0) - XCTAssertEqual((note.userInfo ?? [:]), NSDictionary()) + XCTAssertEqual(((note as NSNotification).userInfo ?? [:]), NSDictionary()) defer { events += 1 @@ -456,14 +456,14 @@ class ListObserverTests: BaseTestDataTestCase { ) for _ in 1 ... 2 { - let didUpdateObjectExpectation = self.expectationForNotification( - "listMonitor:didDeleteObject:fromIndexPath:", + let didUpdateObjectExpectation = self.expectation( + forNotification: "listMonitor:didDeleteObject:fromIndexPath:", object: observer, handler: { (note) -> Bool in XCTAssert(events == 1 || events == 2) - let userInfo = note.userInfo + let userInfo = (note as NSNotification).userInfo XCTAssertNotNil(userInfo) XCTAssertEqual( Set(((userInfo as? [String: AnyObject]) ?? [:]).keys), @@ -476,7 +476,7 @@ class ListObserverTests: BaseTestDataTestCase { XCTAssert(indexPath?.row == 0 || indexPath?.row == 1) let object = userInfo?["object"] as? TestEntity1 - XCTAssertEqual(object?.deleted, true) + XCTAssertEqual(object?.isDeleted, true) defer { @@ -486,14 +486,14 @@ class ListObserverTests: BaseTestDataTestCase { } ) } - let didDeleteSectionExpectation = self.expectationForNotification( - "listMonitor:didDeleteSection:fromSectionIndex:", + let didDeleteSectionExpectation = self.expectation( + forNotification: "listMonitor:didDeleteSection:fromSectionIndex:", object: observer, handler: { (note) -> Bool in XCTAssertEqual(events, 3) - let userInfo = note.userInfo + let userInfo = (note as NSNotification).userInfo XCTAssertNotNil(userInfo) XCTAssertEqual( Set(((userInfo as? [String: AnyObject]) ?? [:]).keys), @@ -505,7 +505,7 @@ class ListObserverTests: BaseTestDataTestCase { XCTAssertEqual(sectionInfo?.name, "0") let sectionIndex = userInfo?["sectionIndex"] - XCTAssertEqual(sectionIndex as? NSNumber, NSNumber(integer: 0)) + XCTAssertEqual(sectionIndex as? NSNumber, NSNumber(value: 0)) defer { @@ -514,13 +514,13 @@ class ListObserverTests: BaseTestDataTestCase { return events == 3 } ) - let didChangeExpectation = self.expectationForNotification( - "listMonitorDidChange:", + let didChangeExpectation = self.expectation( + forNotification: "listMonitorDidChange:", object: observer, handler: { (note) -> Bool in XCTAssertEqual(events, 4) - XCTAssertEqual((note.userInfo ?? [:]), NSDictionary()) + XCTAssertEqual(((note as NSNotification).userInfo ?? [:]), NSDictionary()) defer { events += 1 @@ -528,22 +528,22 @@ class ListObserverTests: BaseTestDataTestCase { return events == 4 } ) - let saveExpectation = self.expectationWithDescription("save") + let saveExpectation = self.expectation(withDescription: "save") stack.beginAsynchronous { (transaction) in transaction.deleteAll( - From(TestEntity1), + From(), Where("testBoolean", isEqualTo: false) ) transaction.commit { (result) in switch result { - case .Success(let hasChanges): + case .success(let hasChanges): XCTAssertTrue(hasChanges) saveExpectation.fulfill() - case .Failure: + case .failure: XCTFail() } } @@ -656,8 +656,8 @@ class TestListObserver: ListSectionObserver { func listMonitor(_ monitor: ListMonitor, didInsertSection sectionInfo: NSFetchedResultsSectionInfo, toSectionIndex sectionIndex: Int) { - NotificationCenter.defaultCenter().postNotificationName( - "listMonitor:didInsertSection:toSectionIndex:", + NotificationCenter.default.post( + name: Notification.Name(rawValue: "listMonitor:didInsertSection:toSectionIndex:"), object: self, userInfo: [ "sectionInfo": sectionInfo, @@ -668,8 +668,8 @@ class TestListObserver: ListSectionObserver { func listMonitor(_ monitor: ListMonitor, didDeleteSection sectionInfo: NSFetchedResultsSectionInfo, fromSectionIndex sectionIndex: Int) { - NotificationCenter.defaultCenter().postNotificationName( - "listMonitor:didDeleteSection:fromSectionIndex:", + NotificationCenter.default.post( + name: Notification.Name(rawValue: "listMonitor:didDeleteSection:fromSectionIndex:"), object: self, userInfo: [ "sectionInfo": sectionInfo, diff --git a/CoreStoreTests/ObjectObserverTests.swift b/CoreStoreTests/ObjectObserverTests.swift index a30e3dc..1f3b7cf 100644 --- a/CoreStoreTests/ObjectObserverTests.swift +++ b/CoreStoreTests/ObjectObserverTests.swift @@ -43,7 +43,7 @@ class ObjectObserverTests: BaseTestDataTestCase { self.prepareTestDataForStack(stack) guard let object = stack.fetchOne( - From(TestEntity1), + From(), Where("testEntityID", isEqualTo: 101)) else { XCTFail() @@ -58,14 +58,14 @@ class ObjectObserverTests: BaseTestDataTestCase { var events = 0 - let willUpdateExpectation = self.expectationForNotification( - "objectMonitor:willUpdateObject:", + let willUpdateExpectation = self.expectation( + forNotification: "objectMonitor:willUpdateObject:", object: observer, handler: { (note) -> Bool in XCTAssertEqual(events, 0) XCTAssertEqual( - (note.userInfo ?? [:]), + ((note as NSNotification).userInfo ?? [:]), ["object": object] as NSDictionary ) defer { @@ -75,14 +75,14 @@ class ObjectObserverTests: BaseTestDataTestCase { return events == 0 } ) - let didUpdateExpectation = self.expectationForNotification( - "objectMonitor:didUpdateObject:changedPersistentKeys:", + let didUpdateExpectation = self.expectation( + forNotification: "objectMonitor:didUpdateObject:changedPersistentKeys:", object: observer, handler: { (note) -> Bool in XCTAssertEqual(events, 1) XCTAssertEqual( - (note.userInfo ?? [:]), + ((note as NSNotification).userInfo ?? [:]), [ "object": object, "changedPersistentKeys": Set( @@ -94,7 +94,7 @@ class ObjectObserverTests: BaseTestDataTestCase { ] as NSDictionary ) let object = note.userInfo?["object"] as? TestEntity1 - XCTAssertEqual(object?.testNumber, NSNumber(integer: 10)) + XCTAssertEqual(object?.testNumber, NSNumber(value: 10)) XCTAssertEqual(object?.testString, "nil:TestEntity1:10") defer { @@ -104,7 +104,7 @@ class ObjectObserverTests: BaseTestDataTestCase { return events == 1 } ) - let saveExpectation = self.expectationWithDescription("save") + let saveExpectation = self.expectation(withDescription: "save") stack.beginAsynchronous { (transaction) in guard let object = transaction.edit(object) else { @@ -112,18 +112,18 @@ class ObjectObserverTests: BaseTestDataTestCase { XCTFail() return } - object.testNumber = NSNumber(integer: 10) + object.testNumber = NSNumber(value: 10) object.testString = "nil:TestEntity1:10" transaction.commit { (result) in switch result { - case .Success(let hasChanges): + case .success(let hasChanges): XCTAssertTrue(hasChanges) saveExpectation.fulfill() - case .Failure: + case .failure: XCTFail() } } @@ -140,7 +140,7 @@ class ObjectObserverTests: BaseTestDataTestCase { self.prepareTestDataForStack(stack) guard let object = stack.fetchOne( - From(TestEntity1), + From(), Where("testEntityID", isEqualTo: 101)) else { XCTFail() @@ -155,14 +155,14 @@ class ObjectObserverTests: BaseTestDataTestCase { var events = 0 - let didDeleteExpectation = self.expectationForNotification( - "objectMonitor:didDeleteObject:", + let didDeleteExpectation = self.expectation( + forNotification: "objectMonitor:didDeleteObject:", object: observer, handler: { (note) -> Bool in XCTAssertEqual(events, 0) XCTAssertEqual( - (note.userInfo ?? [:]), + ((note as NSNotification).userInfo ?? [:]), ["object": object] as NSDictionary ) defer { @@ -172,7 +172,7 @@ class ObjectObserverTests: BaseTestDataTestCase { return events == 0 } ) - let saveExpectation = self.expectationWithDescription("save") + let saveExpectation = self.expectation(withDescription: "save") stack.beginAsynchronous { (transaction) in guard let object = transaction.edit(object) else { @@ -186,12 +186,12 @@ class ObjectObserverTests: BaseTestDataTestCase { switch result { - case .Success(let hasChanges): + case .success(let hasChanges): XCTAssertTrue(hasChanges) XCTAssertTrue(monitor.isObjectDeleted) saveExpectation.fulfill() - case .Failure: + case .failure: XCTFail() } } @@ -221,8 +221,8 @@ class TestObjectObserver: ObjectObserver { func objectMonitor(_ monitor: ObjectMonitor, didUpdateObject object: TestEntity1, changedPersistentKeys: Set) { - NotificationCenter.defaultCenter().postNotificationName( - "objectMonitor:didUpdateObject:changedPersistentKeys:", + NotificationCenter.default.post( + name: NSNotification.Name(rawValue: "objectMonitor:didUpdateObject:changedPersistentKeys:"), object: self, userInfo: [ "object": object, diff --git a/CoreStoreTests/OrderByTests.swift b/CoreStoreTests/OrderByTests.swift index 9d097ef..d8f58c9 100644 --- a/CoreStoreTests/OrderByTests.swift +++ b/CoreStoreTests/OrderByTests.swift @@ -39,7 +39,7 @@ final class OrderByTests: XCTestCase { do { let orderBy = OrderBy() - XCTAssertEqual(orderBy, OrderBy([] as [NSSortDescriptor])) + XCTAssertEqual(orderBy, OrderBy([SortDescriptor]())) XCTAssertNotEqual(orderBy, OrderBy(SortDescriptor(key: "key", ascending: false))) XCTAssertTrue(orderBy.sortDescriptors.isEmpty) } @@ -48,9 +48,9 @@ final class OrderByTests: XCTestCase { let sortDescriptor = SortDescriptor(key: "key1", ascending: true) let orderBy = OrderBy(sortDescriptor) XCTAssertEqual(orderBy, OrderBy(sortDescriptor)) - XCTAssertEqual(orderBy, OrderBy(.Ascending("key1"))) - XCTAssertNotEqual(orderBy, OrderBy(.Ascending("key2"))) - XCTAssertNotEqual(orderBy, OrderBy(.Descending("key1"))) + XCTAssertEqual(orderBy, OrderBy(.ascending("key1"))) + XCTAssertNotEqual(orderBy, OrderBy(.ascending("key2"))) + XCTAssertNotEqual(orderBy, OrderBy(.descending("key1"))) XCTAssertNotEqual(orderBy, OrderBy(SortDescriptor(key: "key1", ascending: false))) XCTAssertEqual(orderBy, OrderBy([sortDescriptor])) XCTAssertEqual(orderBy.sortDescriptors, [sortDescriptor]) @@ -63,7 +63,7 @@ final class OrderByTests: XCTestCase { ] let orderBy = OrderBy(sortDescriptors) XCTAssertEqual(orderBy, OrderBy(sortDescriptors)) - XCTAssertEqual(orderBy, OrderBy(.Ascending("key1"), .Descending("key2"))) + XCTAssertEqual(orderBy, OrderBy(.ascending("key1"), .descending("key2"))) XCTAssertNotEqual( orderBy, OrderBy( @@ -73,30 +73,30 @@ final class OrderByTests: XCTestCase { ] ) ) - XCTAssertNotEqual(orderBy, OrderBy(.Ascending("key1"), .Ascending("key2"))) - XCTAssertNotEqual(orderBy, OrderBy(.Ascending("key1"), .Descending("key3"))) + XCTAssertNotEqual(orderBy, OrderBy(.ascending("key1"), .ascending("key2"))) + XCTAssertNotEqual(orderBy, OrderBy(.ascending("key1"), .descending("key3"))) XCTAssertEqual(orderBy.sortDescriptors, sortDescriptors) } do { - let orderBy = OrderBy(.Ascending("key1")) + let orderBy = OrderBy(.ascending("key1")) let sortDescriptor = SortDescriptor(key: "key1", ascending: true) XCTAssertEqual(orderBy, OrderBy(sortDescriptor)) - XCTAssertEqual(orderBy, OrderBy(.Ascending("key1"))) - XCTAssertNotEqual(orderBy, OrderBy(.Descending("key1"))) - XCTAssertNotEqual(orderBy, OrderBy(.Ascending("key2"))) + XCTAssertEqual(orderBy, OrderBy(.ascending("key1"))) + XCTAssertNotEqual(orderBy, OrderBy(.descending("key1"))) + XCTAssertNotEqual(orderBy, OrderBy(.ascending("key2"))) XCTAssertEqual(orderBy, OrderBy([sortDescriptor])) XCTAssertEqual(orderBy.sortDescriptors, [sortDescriptor]) } do { - let orderBy = OrderBy(.Ascending("key1"), .Descending("key2")) + let orderBy = OrderBy(.ascending("key1"), .descending("key2")) let sortDescriptors = [ SortDescriptor(key: "key1", ascending: true), SortDescriptor(key: "key2", ascending: false) ] XCTAssertEqual(orderBy, OrderBy(sortDescriptors)) - XCTAssertEqual(orderBy, OrderBy(.Ascending("key1"), .Descending("key2"))) + XCTAssertEqual(orderBy, OrderBy(.ascending("key1"), .descending("key2"))) XCTAssertNotEqual( orderBy, OrderBy( @@ -106,20 +106,20 @@ final class OrderByTests: XCTestCase { ] ) ) - XCTAssertNotEqual(orderBy, OrderBy(.Ascending("key1"), .Ascending("key2"))) - XCTAssertNotEqual(orderBy, OrderBy(.Ascending("key1"), .Descending("key3"))) + XCTAssertNotEqual(orderBy, OrderBy(.ascending("key1"), .ascending("key2"))) + XCTAssertNotEqual(orderBy, OrderBy(.ascending("key1"), .descending("key3"))) XCTAssertEqual(orderBy.sortDescriptors, sortDescriptors) } do { - let sortKeys: [SortKey] = [.Ascending("key1"), .Descending("key2")] + let sortKeys: [SortKey] = [.ascending("key1"), .descending("key2")] let orderBy = OrderBy(sortKeys) let sortDescriptors = [ SortDescriptor(key: "key1", ascending: true), SortDescriptor(key: "key2", ascending: false) ] XCTAssertEqual(orderBy, OrderBy(sortDescriptors)) - XCTAssertEqual(orderBy, OrderBy(.Ascending("key1"), .Descending("key2"))) + XCTAssertEqual(orderBy, OrderBy(.ascending("key1"), .descending("key2"))) XCTAssertNotEqual( orderBy, OrderBy( @@ -129,8 +129,8 @@ final class OrderByTests: XCTestCase { ] ) ) - XCTAssertNotEqual(orderBy, OrderBy(.Ascending("key1"), .Ascending("key2"))) - XCTAssertNotEqual(orderBy, OrderBy(.Ascending("key1"), .Descending("key3"))) + XCTAssertNotEqual(orderBy, OrderBy(.ascending("key1"), .ascending("key2"))) + XCTAssertNotEqual(orderBy, OrderBy(.ascending("key1"), .descending("key3"))) XCTAssertEqual(orderBy.sortDescriptors, sortDescriptors) } } @@ -138,15 +138,15 @@ final class OrderByTests: XCTestCase { @objc dynamic func test_ThatOrderByClauseOperations_ComputeCorrectly() { - let orderBy1 = OrderBy(.Ascending("key1")) - let orderBy2 = OrderBy(.Descending("key2")) - let orderBy3 = OrderBy(.Ascending("key3")) + let orderBy1 = OrderBy(.ascending("key1")) + let orderBy2 = OrderBy(.descending("key2")) + let orderBy3 = OrderBy(.ascending("key3")) do { let plusOrderBy = orderBy1 + orderBy2 + orderBy3 - XCTAssertEqual(plusOrderBy, OrderBy(.Ascending("key1"), .Descending("key2"), .Ascending("key3"))) - XCTAssertEqual(plusOrderBy, OrderBy(.Ascending("key1")) + OrderBy(.Descending("key2"), .Ascending("key3"))) + XCTAssertEqual(plusOrderBy, OrderBy(.ascending("key1"), .descending("key2"), .ascending("key3"))) + XCTAssertEqual(plusOrderBy, OrderBy(.ascending("key1")) + OrderBy(.descending("key2"), .ascending("key3"))) XCTAssertNotEqual(plusOrderBy, orderBy1 + orderBy3 + orderBy2) XCTAssertNotEqual(plusOrderBy, orderBy2 + orderBy1 + orderBy3) XCTAssertNotEqual(plusOrderBy, orderBy2 + orderBy3 + orderBy1) @@ -158,14 +158,14 @@ final class OrderByTests: XCTestCase { var plusOrderBy = orderBy1 plusOrderBy += orderBy2 - XCTAssertEqual(plusOrderBy, OrderBy(.Ascending("key1"), .Descending("key2"))) - XCTAssertEqual(plusOrderBy, OrderBy(.Ascending("key1")) + OrderBy(.Descending("key2"))) + XCTAssertEqual(plusOrderBy, OrderBy(.ascending("key1"), .descending("key2"))) + XCTAssertEqual(plusOrderBy, OrderBy(.ascending("key1")) + OrderBy(.descending("key2"))) XCTAssertNotEqual(plusOrderBy, orderBy2 + orderBy1) XCTAssertEqual(plusOrderBy.sortDescriptors, orderBy1.sortDescriptors + orderBy2.sortDescriptors) plusOrderBy += orderBy3 - XCTAssertEqual(plusOrderBy, OrderBy(.Ascending("key1"), .Descending("key2"), .Ascending("key3"))) - XCTAssertEqual(plusOrderBy, OrderBy(.Ascending("key1"), .Descending("key2")) + OrderBy(.Ascending("key3"))) + XCTAssertEqual(plusOrderBy, OrderBy(.ascending("key1"), .descending("key2"), .ascending("key3"))) + XCTAssertEqual(plusOrderBy, OrderBy(.ascending("key1"), .descending("key2")) + OrderBy(.ascending("key3"))) XCTAssertNotEqual(plusOrderBy, orderBy1 + orderBy3 + orderBy2) XCTAssertNotEqual(plusOrderBy, orderBy2 + orderBy1 + orderBy3) XCTAssertNotEqual(plusOrderBy, orderBy2 + orderBy3 + orderBy1) @@ -178,8 +178,8 @@ final class OrderByTests: XCTestCase { @objc dynamic func test_ThatOrderByClauses_ApplyToFetchRequestsCorrectly() { - let orderBy = OrderBy(.Ascending("key")) - let request = NSFetchRequest() + let orderBy = OrderBy(.ascending("key")) + let request = NSFetchRequest() orderBy.applyToFetchRequest(request) XCTAssertNotNil(request.sortDescriptors) XCTAssertEqual(request.sortDescriptors ?? [], orderBy.sortDescriptors) diff --git a/CoreStoreTests/QueryTests.swift b/CoreStoreTests/QueryTests.swift index 585499f..73cb05c 100644 --- a/CoreStoreTests/QueryTests.swift +++ b/CoreStoreTests/QueryTests.swift @@ -173,7 +173,7 @@ class QueryTests: BaseTestDataTestCase { queryClauses ) XCTAssertNotNil(value) - XCTAssertEqual(value, ("nil:TestEntity1:1" as NSString).dataUsingEncoding(NSUTF8StringEncoding)) + XCTAssertEqual(value, ("nil:TestEntity1:1" as NSString).data(using: String.Encoding.utf8.rawValue)) } do { @@ -183,7 +183,7 @@ class QueryTests: BaseTestDataTestCase { queryClauses ) XCTAssertNotNil(value) - XCTAssertEqual(value, self.dateFormatter.dateFromString("2000-01-01T00:00:00Z")) + XCTAssertEqual(value, self.dateFormatter.date(from: "2000-01-01T00:00:00Z")) } do { @@ -208,13 +208,13 @@ class QueryTests: BaseTestDataTestCase { let from = From(configurations) let queryClauses: [QueryClause] = [ Where("%K > %@", "testNumber", 1), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] do { let value = stack.queryValue( from, - Select(.Average("testBoolean")), + Select(.average("testBoolean")), queryClauses ) XCTAssertNotNil(value) @@ -224,7 +224,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Average("testNumber")), + Select(.average("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -234,7 +234,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Average("testNumber")), + Select(.average("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -244,7 +244,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Average("testNumber")), + Select(.average("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -254,7 +254,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Average("testNumber")), + Select(.average("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -264,7 +264,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Average("testNumber")), + Select(.average("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -274,7 +274,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Average("testNumber")), + Select(.average("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -284,7 +284,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Average("testNumber")), + Select(.average("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -294,7 +294,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Average("testNumber")), + Select(.average("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -304,7 +304,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Average("testDecimal")), + Select(.average("testDecimal")), queryClauses ) XCTAssertNotNil(value) @@ -314,7 +314,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Average("testString")), + Select(.average("testString")), queryClauses ) XCTAssertNil(value) @@ -323,7 +323,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Average("testString")), + Select(.average("testString")), queryClauses ) XCTAssertNil(value) @@ -332,7 +332,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Average("testData")), + Select(.average("testData")), queryClauses ) XCTAssertNil(value) @@ -341,7 +341,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Average("testDate")), + Select(.average("testDate")), queryClauses ) XCTAssertNil(value) @@ -374,7 +374,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Count("testBoolean")), + Select(.count("testBoolean")), queryClauses ) XCTAssertNotNil(value) @@ -384,7 +384,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Count("testNumber")), + Select(.count("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -394,7 +394,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Count("testNumber")), + Select(.count("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -404,7 +404,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Count("testNumber")), + Select(.count("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -414,7 +414,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Count("testNumber")), + Select(.count("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -424,7 +424,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Count("testNumber")), + Select(.count("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -434,7 +434,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Count("testNumber")), + Select(.count("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -444,7 +444,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Count("testNumber")), + Select(.count("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -454,7 +454,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Count("testNumber")), + Select(.count("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -464,7 +464,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Count("testDecimal")), + Select(.count("testDecimal")), queryClauses ) XCTAssertNil(value) @@ -473,7 +473,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Count("testString")), + Select(.count("testString")), queryClauses ) XCTAssertNil(value) @@ -482,7 +482,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Count("testString")), + Select(.count("testString")), queryClauses ) XCTAssertNil(value) @@ -491,7 +491,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Count("testData")), + Select(.count("testData")), queryClauses ) XCTAssertNil(value) @@ -500,7 +500,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Count("testDate")), + Select(.count("testDate")), queryClauses ) XCTAssertNil(value) @@ -509,7 +509,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Count("testEntityID")), + Select(.count("testEntityID")), queryClauses ) XCTAssertNil(value) @@ -533,7 +533,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Maximum("testBoolean")), + Select(.maximum("testBoolean")), queryClauses ) XCTAssertNotNil(value) @@ -543,7 +543,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Maximum("testNumber")), + Select(.maximum("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -553,7 +553,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Maximum("testNumber")), + Select(.maximum("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -563,7 +563,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Maximum("testNumber")), + Select(.maximum("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -573,7 +573,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Maximum("testNumber")), + Select(.maximum("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -583,7 +583,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Maximum("testNumber")), + Select(.maximum("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -593,7 +593,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Maximum("testNumber")), + Select(.maximum("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -603,7 +603,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Maximum("testNumber")), + Select(.maximum("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -613,7 +613,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Maximum("testNumber")), + Select(.maximum("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -623,7 +623,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Maximum("testDecimal")), + Select(.maximum("testDecimal")), queryClauses ) XCTAssertNotNil(value) @@ -633,7 +633,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Maximum("testString")), + Select(.maximum("testString")), queryClauses ) XCTAssertNotNil(value) @@ -643,7 +643,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Maximum("testString")), + Select(.maximum("testString")), queryClauses ) XCTAssertNotNil(value) @@ -653,27 +653,27 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Maximum("testData")), + Select(.maximum("testData")), queryClauses ) XCTAssertNotNil(value) - XCTAssertEqual(value, ("nil:TestEntity1:5" as NSString).dataUsingEncoding(NSUTF8StringEncoding)) + XCTAssertEqual(value, ("nil:TestEntity1:5" as NSString).data(using: String.Encoding.utf8.rawValue)) } do { let value = stack.queryValue( from, - Select(.Maximum("testDate")), + Select(.maximum("testDate")), queryClauses ) XCTAssertNotNil(value) - XCTAssertEqual(value, self.dateFormatter.dateFromString("2000-01-05T00:00:00Z")) + XCTAssertEqual(value, self.dateFormatter.date(from: "2000-01-05T00:00:00Z")) } do { let value = stack.queryValue( from, - Select(.Maximum("testEntityID")), + Select(.maximum("testEntityID")), queryClauses ) XCTAssertNil(value) @@ -697,7 +697,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Minimum("testBoolean")), + Select(.minimum("testBoolean")), queryClauses ) XCTAssertNotNil(value) @@ -707,7 +707,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Minimum("testNumber")), + Select(.minimum("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -717,7 +717,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Minimum("testNumber")), + Select(.minimum("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -727,7 +727,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Minimum("testNumber")), + Select(.minimum("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -737,7 +737,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Minimum("testNumber")), + Select(.minimum("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -747,7 +747,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Minimum("testNumber")), + Select(.minimum("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -757,7 +757,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Minimum("testNumber")), + Select(.minimum("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -767,7 +767,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Minimum("testNumber")), + Select(.minimum("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -777,7 +777,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Minimum("testNumber")), + Select(.minimum("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -787,7 +787,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Minimum("testDecimal")), + Select(.minimum("testDecimal")), queryClauses ) XCTAssertNotNil(value) @@ -797,7 +797,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Minimum("testString")), + Select(.minimum("testString")), queryClauses ) XCTAssertNotNil(value) @@ -807,7 +807,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Minimum("testString")), + Select(.minimum("testString")), queryClauses ) XCTAssertNotNil(value) @@ -817,27 +817,27 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Minimum("testData")), + Select(.minimum("testData")), queryClauses ) XCTAssertNotNil(value) - XCTAssertEqual(value, ("nil:TestEntity1:2" as NSString).dataUsingEncoding(NSUTF8StringEncoding)) + XCTAssertEqual(value, ("nil:TestEntity1:2" as NSString).data(using: String.Encoding.utf8.rawValue)) } do { let value = stack.queryValue( from, - Select(.Minimum("testDate")), + Select(.minimum("testDate")), queryClauses ) XCTAssertNotNil(value) - XCTAssertEqual(value, self.dateFormatter.dateFromString("2000-01-02T00:00:00Z")) + XCTAssertEqual(value, self.dateFormatter.date(from: "2000-01-02T00:00:00Z")) } do { let value = stack.queryValue( from, - Select(.Minimum("testEntityID")), + Select(.minimum("testEntityID")), queryClauses ) XCTAssertNil(value) @@ -861,7 +861,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Sum("testBoolean")), + Select(.sum("testBoolean")), queryClauses ) XCTAssertNotNil(value) @@ -871,7 +871,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Sum("testNumber")), + Select(.sum("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -881,7 +881,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Sum("testNumber")), + Select(.sum("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -891,7 +891,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Sum("testNumber")), + Select(.sum("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -901,7 +901,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Sum("testNumber")), + Select(.sum("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -911,7 +911,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Sum("testNumber")), + Select(.sum("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -921,7 +921,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Sum("testNumber")), + Select(.sum("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -931,7 +931,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Sum("testNumber")), + Select(.sum("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -941,7 +941,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Sum("testNumber")), + Select(.sum("testNumber")), queryClauses ) XCTAssertNotNil(value) @@ -951,7 +951,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Sum("testDecimal")), + Select(.sum("testDecimal")), queryClauses ) XCTAssertNotNil(value) @@ -961,7 +961,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Sum("testString")), + Select(.sum("testString")), queryClauses ) XCTAssertNil(value) @@ -970,7 +970,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Sum("testString")), + Select(.sum("testString")), queryClauses ) XCTAssertNil(value) @@ -979,7 +979,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Sum("testData")), + Select(.sum("testData")), queryClauses ) XCTAssertNil(value) @@ -988,7 +988,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Sum("testDate")), + Select(.sum("testDate")), queryClauses ) XCTAssertNil(value) @@ -997,7 +997,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.Sum("testEntityID")), + Select(.sum("testEntityID")), queryClauses ) XCTAssertNil(value) @@ -1021,7 +1021,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.ObjectID()), + Select(.objectID()), queryClauses ) XCTAssertNil(value) @@ -1030,7 +1030,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.ObjectID()), + Select(.objectID()), queryClauses ) XCTAssertNil(value) @@ -1039,7 +1039,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.ObjectID()), + Select(.objectID()), queryClauses ) XCTAssertNil(value) @@ -1048,7 +1048,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.ObjectID()), + Select(.objectID()), queryClauses ) XCTAssertNil(value) @@ -1057,7 +1057,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.ObjectID()), + Select(.objectID()), queryClauses ) XCTAssertNil(value) @@ -1066,7 +1066,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.ObjectID()), + Select(.objectID()), queryClauses ) XCTAssertNil(value) @@ -1075,7 +1075,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.ObjectID()), + Select(.objectID()), queryClauses ) XCTAssertNil(value) @@ -1084,7 +1084,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.ObjectID()), + Select(.objectID()), queryClauses ) XCTAssertNil(value) @@ -1093,7 +1093,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.ObjectID()), + Select(.objectID()), queryClauses ) XCTAssertNil(value) @@ -1102,7 +1102,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.ObjectID()), + Select(.objectID()), queryClauses ) XCTAssertNil(value) @@ -1111,7 +1111,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.ObjectID()), + Select(.objectID()), queryClauses ) XCTAssertNil(value) @@ -1120,7 +1120,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.ObjectID()), + Select(.objectID()), queryClauses ) XCTAssertNil(value) @@ -1129,7 +1129,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.ObjectID()), + Select(.objectID()), queryClauses ) XCTAssertNil(value) @@ -1138,7 +1138,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.ObjectID()), + Select(.objectID()), queryClauses ) XCTAssertNil(value) @@ -1147,7 +1147,7 @@ class QueryTests: BaseTestDataTestCase { let value = stack.queryValue( from, - Select(.ObjectID()), + Select(.objectID()), queryClauses ) XCTAssertNotNil(value) @@ -1166,7 +1166,7 @@ class QueryTests: BaseTestDataTestCase { let from = From(configurations) let queryClauses: [QueryClause] = [ Where("%K > %@", "testNumber", 3), - OrderBy(.Ascending("testEntityID")) + OrderBy(.ascending("testEntityID")) ] do { @@ -1188,20 +1188,20 @@ class QueryTests: BaseTestDataTestCase { values!, [ [ - "testBoolean": NSNumber(bool: false), - "testNumber": NSNumber(integer: 4), + "testBoolean": NSNumber(value: false), + "testNumber": NSNumber(value: 4), "testDecimal": NSDecimalNumber(string: "4"), "testString": "nil:TestEntity1:4", - "testData": ("nil:TestEntity1:4" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!, - "testDate": self.dateFormatter.dateFromString("2000-01-04T00:00:00Z")! + "testData": ("nil:TestEntity1:4" as NSString).data(using: String.Encoding.utf8.rawValue)!, + "testDate": self.dateFormatter.date(from: "2000-01-04T00:00:00Z")! ], [ - "testBoolean": NSNumber(bool: true), - "testNumber": NSNumber(integer: 5), + "testBoolean": NSNumber(value: true), + "testNumber": NSNumber(value: 5), "testDecimal": NSDecimalNumber(string: "5"), "testString": "nil:TestEntity1:5", - "testData": ("nil:TestEntity1:5" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!, - "testDate": self.dateFormatter.dateFromString("2000-01-05T00:00:00Z")! + "testData": ("nil:TestEntity1:5" as NSString).data(using: String.Encoding.utf8.rawValue)!, + "testDate": self.dateFormatter.date(from: "2000-01-05T00:00:00Z")! ] ] ) @@ -1224,11 +1224,11 @@ class QueryTests: BaseTestDataTestCase { let values = stack.queryAttributes( from, Select( - .Sum("testBoolean"), - .Count("testNumber"), - .Maximum("testNumber"), - .Minimum("testNumber"), - .Average("testDecimal") + .sum("testBoolean"), + .count("testNumber"), + .maximum("testNumber"), + .minimum("testNumber"), + .average("testDecimal") ), queryClauses ) @@ -1251,11 +1251,11 @@ class QueryTests: BaseTestDataTestCase { let values = stack.queryAttributes( from, Select( - .Sum("testBoolean", As: "testSum"), - .Count("testNumber", As: "testCount"), - .Maximum("testNumber", As: "testMaximum"), - .Minimum("testNumber", As: "testMinimum"), - .Average("testDecimal", As: "testAverage") + .sum("testBoolean", As: "testSum"), + .count("testNumber", As: "testCount"), + .maximum("testNumber", As: "testMaximum"), + .minimum("testNumber", As: "testMinimum"), + .average("testDecimal", As: "testAverage") ), queryClauses ) diff --git a/CoreStoreTests/SelectTests.swift b/CoreStoreTests/SelectTests.swift index cce2efb..54beeed 100644 --- a/CoreStoreTests/SelectTests.swift +++ b/CoreStoreTests/SelectTests.swift @@ -39,14 +39,14 @@ final class SelectTests: XCTestCase { do { let term: SelectTerm = "attribute" - XCTAssertEqual(term, SelectTerm.Attribute("attribute")) - XCTAssertNotEqual(term, SelectTerm.Attribute("attribute2")) - XCTAssertNotEqual(term, SelectTerm.Average("attribute")) - XCTAssertNotEqual(term, SelectTerm.Count("attribute")) - XCTAssertNotEqual(term, SelectTerm.Maximum("attribute")) - XCTAssertNotEqual(term, SelectTerm.Minimum("attribute")) - XCTAssertNotEqual(term, SelectTerm.Sum("attribute")) - XCTAssertNotEqual(term, SelectTerm.ObjectID()) + XCTAssertEqual(term, SelectTerm.attribute("attribute")) + XCTAssertNotEqual(term, SelectTerm.attribute("attribute2")) + XCTAssertNotEqual(term, SelectTerm.average("attribute")) + XCTAssertNotEqual(term, SelectTerm.count("attribute")) + XCTAssertNotEqual(term, SelectTerm.maximum("attribute")) + XCTAssertNotEqual(term, SelectTerm.minimum("attribute")) + XCTAssertNotEqual(term, SelectTerm.sum("attribute")) + XCTAssertNotEqual(term, SelectTerm.objectID()) switch term { case ._attribute(let key): @@ -58,14 +58,14 @@ final class SelectTests: XCTestCase { } do { - let term = SelectTerm.Attribute("attribute") - XCTAssertNotEqual(term, SelectTerm.Attribute("attribute2")) - XCTAssertNotEqual(term, SelectTerm.Average("attribute")) - XCTAssertNotEqual(term, SelectTerm.Count("attribute")) - XCTAssertNotEqual(term, SelectTerm.Maximum("attribute")) - XCTAssertNotEqual(term, SelectTerm.Minimum("attribute")) - XCTAssertNotEqual(term, SelectTerm.Sum("attribute")) - XCTAssertNotEqual(term, SelectTerm.ObjectID()) + let term = SelectTerm.attribute("attribute") + XCTAssertNotEqual(term, SelectTerm.attribute("attribute2")) + XCTAssertNotEqual(term, SelectTerm.average("attribute")) + XCTAssertNotEqual(term, SelectTerm.count("attribute")) + XCTAssertNotEqual(term, SelectTerm.maximum("attribute")) + XCTAssertNotEqual(term, SelectTerm.minimum("attribute")) + XCTAssertNotEqual(term, SelectTerm.sum("attribute")) + XCTAssertNotEqual(term, SelectTerm.objectID()) switch term { case ._attribute(let key): @@ -82,23 +82,23 @@ final class SelectTests: XCTestCase { do { - let term = SelectTerm.Average("attribute") - XCTAssertEqual(term, SelectTerm.Average("attribute")) - XCTAssertNotEqual(term, SelectTerm.Average("attribute", As: "alias")) - XCTAssertNotEqual(term, SelectTerm.Average("attribute2")) - XCTAssertNotEqual(term, SelectTerm.Attribute("attribute")) - XCTAssertNotEqual(term, SelectTerm.Count("attribute")) - XCTAssertNotEqual(term, SelectTerm.Maximum("attribute")) - XCTAssertNotEqual(term, SelectTerm.Minimum("attribute")) - XCTAssertNotEqual(term, SelectTerm.Sum("attribute")) - XCTAssertNotEqual(term, SelectTerm.ObjectID()) + let term = SelectTerm.average("attribute") + XCTAssertEqual(term, SelectTerm.average("attribute")) + XCTAssertNotEqual(term, SelectTerm.average("attribute", As: "alias")) + XCTAssertNotEqual(term, SelectTerm.average("attribute2")) + XCTAssertNotEqual(term, SelectTerm.attribute("attribute")) + XCTAssertNotEqual(term, SelectTerm.count("attribute")) + XCTAssertNotEqual(term, SelectTerm.maximum("attribute")) + XCTAssertNotEqual(term, SelectTerm.minimum("attribute")) + XCTAssertNotEqual(term, SelectTerm.sum("attribute")) + XCTAssertNotEqual(term, SelectTerm.objectID()) switch term { case ._aggregate(let function, let keyPath, let alias, let nativeType): XCTAssertEqual(function, "average:") XCTAssertEqual(keyPath, "attribute") XCTAssertEqual(alias, "average(attribute)") - XCTAssertTrue(nativeType == .DecimalAttributeType) + XCTAssertTrue(nativeType == .decimalAttributeType) default: XCTFail() @@ -106,23 +106,23 @@ final class SelectTests: XCTestCase { } do { - let term = SelectTerm.Average("attribute", As: "alias") - XCTAssertEqual(term, SelectTerm.Average("attribute", As: "alias")) - XCTAssertNotEqual(term, SelectTerm.Average("attribute", As: "alias2")) - XCTAssertNotEqual(term, SelectTerm.Average("attribute2")) - XCTAssertNotEqual(term, SelectTerm.Attribute("attribute")) - XCTAssertNotEqual(term, SelectTerm.Count("attribute")) - XCTAssertNotEqual(term, SelectTerm.Maximum("attribute")) - XCTAssertNotEqual(term, SelectTerm.Minimum("attribute")) - XCTAssertNotEqual(term, SelectTerm.Sum("attribute")) - XCTAssertNotEqual(term, SelectTerm.ObjectID()) + let term = SelectTerm.average("attribute", As: "alias") + XCTAssertEqual(term, SelectTerm.average("attribute", As: "alias")) + XCTAssertNotEqual(term, SelectTerm.average("attribute", As: "alias2")) + XCTAssertNotEqual(term, SelectTerm.average("attribute2")) + XCTAssertNotEqual(term, SelectTerm.attribute("attribute")) + XCTAssertNotEqual(term, SelectTerm.count("attribute")) + XCTAssertNotEqual(term, SelectTerm.maximum("attribute")) + XCTAssertNotEqual(term, SelectTerm.minimum("attribute")) + XCTAssertNotEqual(term, SelectTerm.sum("attribute")) + XCTAssertNotEqual(term, SelectTerm.objectID()) switch term { case ._aggregate(let function, let keyPath, let alias, let nativeType): XCTAssertEqual(function, "average:") XCTAssertEqual(keyPath, "attribute") XCTAssertEqual(alias, "alias") - XCTAssertTrue(nativeType == .DecimalAttributeType) + XCTAssertTrue(nativeType == .decimalAttributeType) default: XCTFail() @@ -135,23 +135,23 @@ final class SelectTests: XCTestCase { do { - let term = SelectTerm.Count("attribute") - XCTAssertEqual(term, SelectTerm.Count("attribute")) - XCTAssertNotEqual(term, SelectTerm.Count("attribute", As: "alias")) - XCTAssertNotEqual(term, SelectTerm.Count("attribute2")) - XCTAssertNotEqual(term, SelectTerm.Attribute("attribute")) - XCTAssertNotEqual(term, SelectTerm.Average("attribute")) - XCTAssertNotEqual(term, SelectTerm.Maximum("attribute")) - XCTAssertNotEqual(term, SelectTerm.Minimum("attribute")) - XCTAssertNotEqual(term, SelectTerm.Sum("attribute")) - XCTAssertNotEqual(term, SelectTerm.ObjectID()) + let term = SelectTerm.count("attribute") + XCTAssertEqual(term, SelectTerm.count("attribute")) + XCTAssertNotEqual(term, SelectTerm.count("attribute", As: "alias")) + XCTAssertNotEqual(term, SelectTerm.count("attribute2")) + XCTAssertNotEqual(term, SelectTerm.attribute("attribute")) + XCTAssertNotEqual(term, SelectTerm.average("attribute")) + XCTAssertNotEqual(term, SelectTerm.maximum("attribute")) + XCTAssertNotEqual(term, SelectTerm.minimum("attribute")) + XCTAssertNotEqual(term, SelectTerm.sum("attribute")) + XCTAssertNotEqual(term, SelectTerm.objectID()) switch term { case ._aggregate(let function, let keyPath, let alias, let nativeType): XCTAssertEqual(function, "count:") XCTAssertEqual(keyPath, "attribute") XCTAssertEqual(alias, "count(attribute)") - XCTAssertTrue(nativeType == .Integer64AttributeType) + XCTAssertTrue(nativeType == .integer64AttributeType) default: XCTFail() @@ -159,23 +159,23 @@ final class SelectTests: XCTestCase { } do { - let term = SelectTerm.Count("attribute", As: "alias") - XCTAssertEqual(term, SelectTerm.Count("attribute", As: "alias")) - XCTAssertNotEqual(term, SelectTerm.Count("attribute", As: "alias2")) - XCTAssertNotEqual(term, SelectTerm.Count("attribute2")) - XCTAssertNotEqual(term, SelectTerm.Attribute("attribute")) - XCTAssertNotEqual(term, SelectTerm.Average("attribute")) - XCTAssertNotEqual(term, SelectTerm.Maximum("attribute")) - XCTAssertNotEqual(term, SelectTerm.Minimum("attribute")) - XCTAssertNotEqual(term, SelectTerm.Sum("attribute")) - XCTAssertNotEqual(term, SelectTerm.ObjectID()) + let term = SelectTerm.count("attribute", As: "alias") + XCTAssertEqual(term, SelectTerm.count("attribute", As: "alias")) + XCTAssertNotEqual(term, SelectTerm.count("attribute", As: "alias2")) + XCTAssertNotEqual(term, SelectTerm.count("attribute2")) + XCTAssertNotEqual(term, SelectTerm.attribute("attribute")) + XCTAssertNotEqual(term, SelectTerm.average("attribute")) + XCTAssertNotEqual(term, SelectTerm.maximum("attribute")) + XCTAssertNotEqual(term, SelectTerm.minimum("attribute")) + XCTAssertNotEqual(term, SelectTerm.sum("attribute")) + XCTAssertNotEqual(term, SelectTerm.objectID()) switch term { case ._aggregate(let function, let keyPath, let alias, let nativeType): XCTAssertEqual(function, "count:") XCTAssertEqual(keyPath, "attribute") XCTAssertEqual(alias, "alias") - XCTAssertTrue(nativeType == .Integer64AttributeType) + XCTAssertTrue(nativeType == .integer64AttributeType) default: XCTFail() @@ -188,23 +188,23 @@ final class SelectTests: XCTestCase { do { - let term = SelectTerm.Maximum("attribute") - XCTAssertEqual(term, SelectTerm.Maximum("attribute")) - XCTAssertNotEqual(term, SelectTerm.Maximum("attribute", As: "alias")) - XCTAssertNotEqual(term, SelectTerm.Maximum("attribute2")) - XCTAssertNotEqual(term, SelectTerm.Attribute("attribute")) - XCTAssertNotEqual(term, SelectTerm.Average("attribute")) - XCTAssertNotEqual(term, SelectTerm.Count("attribute")) - XCTAssertNotEqual(term, SelectTerm.Minimum("attribute")) - XCTAssertNotEqual(term, SelectTerm.Sum("attribute")) - XCTAssertNotEqual(term, SelectTerm.ObjectID()) + let term = SelectTerm.maximum("attribute") + XCTAssertEqual(term, SelectTerm.maximum("attribute")) + XCTAssertNotEqual(term, SelectTerm.maximum("attribute", As: "alias")) + XCTAssertNotEqual(term, SelectTerm.maximum("attribute2")) + XCTAssertNotEqual(term, SelectTerm.attribute("attribute")) + XCTAssertNotEqual(term, SelectTerm.average("attribute")) + XCTAssertNotEqual(term, SelectTerm.count("attribute")) + XCTAssertNotEqual(term, SelectTerm.minimum("attribute")) + XCTAssertNotEqual(term, SelectTerm.sum("attribute")) + XCTAssertNotEqual(term, SelectTerm.objectID()) switch term { case ._aggregate(let function, let keyPath, let alias, let nativeType): XCTAssertEqual(function, "max:") XCTAssertEqual(keyPath, "attribute") XCTAssertEqual(alias, "max(attribute)") - XCTAssertTrue(nativeType == .UndefinedAttributeType) + XCTAssertTrue(nativeType == .undefinedAttributeType) default: XCTFail() @@ -212,23 +212,23 @@ final class SelectTests: XCTestCase { } do { - let term = SelectTerm.Maximum("attribute", As: "alias") - XCTAssertEqual(term, SelectTerm.Maximum("attribute", As: "alias")) - XCTAssertNotEqual(term, SelectTerm.Maximum("attribute", As: "alias2")) - XCTAssertNotEqual(term, SelectTerm.Maximum("attribute2")) - XCTAssertNotEqual(term, SelectTerm.Attribute("attribute")) - XCTAssertNotEqual(term, SelectTerm.Average("attribute")) - XCTAssertNotEqual(term, SelectTerm.Count("attribute")) - XCTAssertNotEqual(term, SelectTerm.Minimum("attribute")) - XCTAssertNotEqual(term, SelectTerm.Sum("attribute")) - XCTAssertNotEqual(term, SelectTerm.ObjectID()) + let term = SelectTerm.maximum("attribute", As: "alias") + XCTAssertEqual(term, SelectTerm.maximum("attribute", As: "alias")) + XCTAssertNotEqual(term, SelectTerm.maximum("attribute", As: "alias2")) + XCTAssertNotEqual(term, SelectTerm.maximum("attribute2")) + XCTAssertNotEqual(term, SelectTerm.attribute("attribute")) + XCTAssertNotEqual(term, SelectTerm.average("attribute")) + XCTAssertNotEqual(term, SelectTerm.count("attribute")) + XCTAssertNotEqual(term, SelectTerm.minimum("attribute")) + XCTAssertNotEqual(term, SelectTerm.sum("attribute")) + XCTAssertNotEqual(term, SelectTerm.objectID()) switch term { case ._aggregate(let function, let keyPath, let alias, let nativeType): XCTAssertEqual(function, "max:") XCTAssertEqual(keyPath, "attribute") XCTAssertEqual(alias, "alias") - XCTAssertTrue(nativeType == .UndefinedAttributeType) + XCTAssertTrue(nativeType == .undefinedAttributeType) default: XCTFail() @@ -241,23 +241,23 @@ final class SelectTests: XCTestCase { do { - let term = SelectTerm.Minimum("attribute") - XCTAssertEqual(term, SelectTerm.Minimum("attribute")) - XCTAssertNotEqual(term, SelectTerm.Minimum("attribute", As: "alias")) - XCTAssertNotEqual(term, SelectTerm.Minimum("attribute2")) - XCTAssertNotEqual(term, SelectTerm.Attribute("attribute")) - XCTAssertNotEqual(term, SelectTerm.Average("attribute")) - XCTAssertNotEqual(term, SelectTerm.Count("attribute")) - XCTAssertNotEqual(term, SelectTerm.Maximum("attribute")) - XCTAssertNotEqual(term, SelectTerm.Sum("attribute")) - XCTAssertNotEqual(term, SelectTerm.ObjectID()) + let term = SelectTerm.minimum("attribute") + XCTAssertEqual(term, SelectTerm.minimum("attribute")) + XCTAssertNotEqual(term, SelectTerm.minimum("attribute", As: "alias")) + XCTAssertNotEqual(term, SelectTerm.minimum("attribute2")) + XCTAssertNotEqual(term, SelectTerm.attribute("attribute")) + XCTAssertNotEqual(term, SelectTerm.average("attribute")) + XCTAssertNotEqual(term, SelectTerm.count("attribute")) + XCTAssertNotEqual(term, SelectTerm.maximum("attribute")) + XCTAssertNotEqual(term, SelectTerm.sum("attribute")) + XCTAssertNotEqual(term, SelectTerm.objectID()) switch term { case ._aggregate(let function, let keyPath, let alias, let nativeType): XCTAssertEqual(function, "min:") XCTAssertEqual(keyPath, "attribute") XCTAssertEqual(alias, "min(attribute)") - XCTAssertTrue(nativeType == .UndefinedAttributeType) + XCTAssertTrue(nativeType == .undefinedAttributeType) default: XCTFail() @@ -265,23 +265,23 @@ final class SelectTests: XCTestCase { } do { - let term = SelectTerm.Minimum("attribute", As: "alias") - XCTAssertEqual(term, SelectTerm.Minimum("attribute", As: "alias")) - XCTAssertNotEqual(term, SelectTerm.Minimum("attribute", As: "alias2")) - XCTAssertNotEqual(term, SelectTerm.Minimum("attribute2")) - XCTAssertNotEqual(term, SelectTerm.Attribute("attribute")) - XCTAssertNotEqual(term, SelectTerm.Average("attribute")) - XCTAssertNotEqual(term, SelectTerm.Count("attribute")) - XCTAssertNotEqual(term, SelectTerm.Maximum("attribute")) - XCTAssertNotEqual(term, SelectTerm.Sum("attribute")) - XCTAssertNotEqual(term, SelectTerm.ObjectID()) + let term = SelectTerm.minimum("attribute", As: "alias") + XCTAssertEqual(term, SelectTerm.minimum("attribute", As: "alias")) + XCTAssertNotEqual(term, SelectTerm.minimum("attribute", As: "alias2")) + XCTAssertNotEqual(term, SelectTerm.minimum("attribute2")) + XCTAssertNotEqual(term, SelectTerm.attribute("attribute")) + XCTAssertNotEqual(term, SelectTerm.average("attribute")) + XCTAssertNotEqual(term, SelectTerm.count("attribute")) + XCTAssertNotEqual(term, SelectTerm.maximum("attribute")) + XCTAssertNotEqual(term, SelectTerm.sum("attribute")) + XCTAssertNotEqual(term, SelectTerm.objectID()) switch term { case ._aggregate(let function, let keyPath, let alias, let nativeType): XCTAssertEqual(function, "min:") XCTAssertEqual(keyPath, "attribute") XCTAssertEqual(alias, "alias") - XCTAssertTrue(nativeType == .UndefinedAttributeType) + XCTAssertTrue(nativeType == .undefinedAttributeType) default: XCTFail() @@ -294,23 +294,23 @@ final class SelectTests: XCTestCase { do { - let term = SelectTerm.Sum("attribute") - XCTAssertEqual(term, SelectTerm.Sum("attribute")) - XCTAssertNotEqual(term, SelectTerm.Sum("attribute", As: "alias")) - XCTAssertNotEqual(term, SelectTerm.Sum("attribute2")) - XCTAssertNotEqual(term, SelectTerm.Attribute("attribute")) - XCTAssertNotEqual(term, SelectTerm.Average("attribute")) - XCTAssertNotEqual(term, SelectTerm.Count("attribute")) - XCTAssertNotEqual(term, SelectTerm.Maximum("attribute")) - XCTAssertNotEqual(term, SelectTerm.Minimum("attribute")) - XCTAssertNotEqual(term, SelectTerm.ObjectID()) + let term = SelectTerm.sum("attribute") + XCTAssertEqual(term, SelectTerm.sum("attribute")) + XCTAssertNotEqual(term, SelectTerm.sum("attribute", As: "alias")) + XCTAssertNotEqual(term, SelectTerm.sum("attribute2")) + XCTAssertNotEqual(term, SelectTerm.attribute("attribute")) + XCTAssertNotEqual(term, SelectTerm.average("attribute")) + XCTAssertNotEqual(term, SelectTerm.count("attribute")) + XCTAssertNotEqual(term, SelectTerm.maximum("attribute")) + XCTAssertNotEqual(term, SelectTerm.minimum("attribute")) + XCTAssertNotEqual(term, SelectTerm.objectID()) switch term { case ._aggregate(let function, let keyPath, let alias, let nativeType): XCTAssertEqual(function, "sum:") XCTAssertEqual(keyPath, "attribute") XCTAssertEqual(alias, "sum(attribute)") - XCTAssertTrue(nativeType == .DecimalAttributeType) + XCTAssertTrue(nativeType == .decimalAttributeType) default: XCTFail() @@ -318,23 +318,23 @@ final class SelectTests: XCTestCase { } do { - let term = SelectTerm.Sum("attribute", As: "alias") - XCTAssertEqual(term, SelectTerm.Sum("attribute", As: "alias")) - XCTAssertNotEqual(term, SelectTerm.Sum("attribute", As: "alias2")) - XCTAssertNotEqual(term, SelectTerm.Sum("attribute2")) - XCTAssertNotEqual(term, SelectTerm.Attribute("attribute")) - XCTAssertNotEqual(term, SelectTerm.Average("attribute")) - XCTAssertNotEqual(term, SelectTerm.Count("attribute")) - XCTAssertNotEqual(term, SelectTerm.Maximum("attribute")) - XCTAssertNotEqual(term, SelectTerm.Minimum("attribute")) - XCTAssertNotEqual(term, SelectTerm.ObjectID()) + let term = SelectTerm.sum("attribute", As: "alias") + XCTAssertEqual(term, SelectTerm.sum("attribute", As: "alias")) + XCTAssertNotEqual(term, SelectTerm.sum("attribute", As: "alias2")) + XCTAssertNotEqual(term, SelectTerm.sum("attribute2")) + XCTAssertNotEqual(term, SelectTerm.attribute("attribute")) + XCTAssertNotEqual(term, SelectTerm.average("attribute")) + XCTAssertNotEqual(term, SelectTerm.count("attribute")) + XCTAssertNotEqual(term, SelectTerm.maximum("attribute")) + XCTAssertNotEqual(term, SelectTerm.minimum("attribute")) + XCTAssertNotEqual(term, SelectTerm.objectID()) switch term { case ._aggregate(let function, let keyPath, let alias, let nativeType): XCTAssertEqual(function, "sum:") XCTAssertEqual(keyPath, "attribute") XCTAssertEqual(alias, "alias") - XCTAssertTrue(nativeType == .DecimalAttributeType) + XCTAssertTrue(nativeType == .decimalAttributeType) default: XCTFail() @@ -347,20 +347,20 @@ final class SelectTests: XCTestCase { do { - let term = SelectTerm.ObjectID() - XCTAssertEqual(term, SelectTerm.ObjectID()) - XCTAssertNotEqual(term, SelectTerm.ObjectID(As: "alias")) - XCTAssertNotEqual(term, SelectTerm.Attribute("attribute")) - XCTAssertNotEqual(term, SelectTerm.Average("attribute")) - XCTAssertNotEqual(term, SelectTerm.Count("attribute")) - XCTAssertNotEqual(term, SelectTerm.Maximum("attribute")) - XCTAssertNotEqual(term, SelectTerm.Minimum("attribute")) - XCTAssertNotEqual(term, SelectTerm.Sum("attribute")) + let term = SelectTerm.objectID() + XCTAssertEqual(term, SelectTerm.objectID()) + XCTAssertNotEqual(term, SelectTerm.objectID(As: "alias")) + XCTAssertNotEqual(term, SelectTerm.attribute("attribute")) + XCTAssertNotEqual(term, SelectTerm.average("attribute")) + XCTAssertNotEqual(term, SelectTerm.count("attribute")) + XCTAssertNotEqual(term, SelectTerm.maximum("attribute")) + XCTAssertNotEqual(term, SelectTerm.minimum("attribute")) + XCTAssertNotEqual(term, SelectTerm.sum("attribute")) switch term { case ._identity(let alias, let nativeType): XCTAssertEqual(alias, "objectID") - XCTAssertTrue(nativeType == .ObjectIDAttributeType) + XCTAssertTrue(nativeType == .objectIDAttributeType) default: XCTFail() @@ -368,21 +368,21 @@ final class SelectTests: XCTestCase { } do { - let term = SelectTerm.ObjectID(As: "alias") - XCTAssertEqual(term, SelectTerm.ObjectID(As: "alias")) - XCTAssertNotEqual(term, SelectTerm.ObjectID(As: "alias2")) - XCTAssertNotEqual(term, SelectTerm.ObjectID()) - XCTAssertNotEqual(term, SelectTerm.Attribute("attribute")) - XCTAssertNotEqual(term, SelectTerm.Average("attribute")) - XCTAssertNotEqual(term, SelectTerm.Count("attribute")) - XCTAssertNotEqual(term, SelectTerm.Maximum("attribute")) - XCTAssertNotEqual(term, SelectTerm.Minimum("attribute")) - XCTAssertNotEqual(term, SelectTerm.Sum("attribute")) + let term = SelectTerm.objectID(As: "alias") + XCTAssertEqual(term, SelectTerm.objectID(As: "alias")) + XCTAssertNotEqual(term, SelectTerm.objectID(As: "alias2")) + XCTAssertNotEqual(term, SelectTerm.objectID()) + XCTAssertNotEqual(term, SelectTerm.attribute("attribute")) + XCTAssertNotEqual(term, SelectTerm.average("attribute")) + XCTAssertNotEqual(term, SelectTerm.count("attribute")) + XCTAssertNotEqual(term, SelectTerm.maximum("attribute")) + XCTAssertNotEqual(term, SelectTerm.minimum("attribute")) + XCTAssertNotEqual(term, SelectTerm.sum("attribute")) switch term { case ._identity(let alias, let nativeType): XCTAssertEqual(alias, "alias") - XCTAssertTrue(nativeType == .ObjectIDAttributeType) + XCTAssertTrue(nativeType == .objectIDAttributeType) default: XCTFail() @@ -393,9 +393,9 @@ final class SelectTests: XCTestCase { @objc dynamic func test_ThatSelectClauses_ConfigureCorrectly() { - let term1 = SelectTerm.Attribute("attribute1") - let term2 = SelectTerm.Attribute("attribute2") - let term3 = SelectTerm.Attribute("attribute3") + let term1 = SelectTerm.attribute("attribute1") + let term2 = SelectTerm.attribute("attribute2") + let term3 = SelectTerm.attribute("attribute3") do { let select = Select(term1, term2, term3) diff --git a/CoreStoreTests/SetupTests.swift b/CoreStoreTests/SetupTests.swift index 0952c45..9e0c4fe 100644 --- a/CoreStoreTests/SetupTests.swift +++ b/CoreStoreTests/SetupTests.swift @@ -36,13 +36,13 @@ class SetupTests: BaseTestCase { do { - let model = NSManagedObjectModel.mergedModelFromBundles([Bundle(forClass: self.dynamicType)])! + let model = NSManagedObjectModel.mergedModel(from: [Bundle(for: self.dynamicType)])! let stack = DataStack(model: model, migrationChain: nil) XCTAssertEqual(stack.coordinator.managedObjectModel, model) XCTAssertEqual(stack.rootSavingContext.persistentStoreCoordinator, stack.coordinator) - XCTAssertNil(stack.rootSavingContext.parentContext) - XCTAssertEqual(stack.mainContext.parentContext, stack.rootSavingContext) + XCTAssertNil(stack.rootSavingContext.parent) + XCTAssertEqual(stack.mainContext.parent, stack.rootSavingContext) XCTAssertEqual(stack.model, model) XCTAssertTrue(stack.migrationChain.valid) XCTAssertTrue(stack.migrationChain.empty) @@ -56,11 +56,11 @@ class SetupTests: BaseTestCase { let migrationChain: MigrationChain = ["version1", "version2", "version3"] - let stack = self.expectLogger([.LogWarning]) { + let stack = self.expectLogger([.logWarning]) { DataStack( modelName: "Model", - bundle: Bundle(forClass: self.dynamicType), + bundle: Bundle(for: self.dynamicType), migrationChain: migrationChain ) } @@ -77,7 +77,7 @@ class SetupTests: BaseTestCase { let stack = DataStack( modelName: "Model", - bundle: Bundle(forClass: self.dynamicType) + bundle: Bundle(for: self.dynamicType) ) do { @@ -132,7 +132,7 @@ class SetupTests: BaseTestCase { let stack = DataStack( modelName: "Model", - bundle: Bundle(forClass: self.dynamicType) + bundle: Bundle(for: self.dynamicType) ) do { @@ -194,7 +194,7 @@ class SetupTests: BaseTestCase { let stack = DataStack( modelName: "Model", - bundle: Bundle(forClass: self.dynamicType) + bundle: Bundle(for: self.dynamicType) ) do { diff --git a/CoreStoreTests/StorageInterfaceTests.swift b/CoreStoreTests/StorageInterfaceTests.swift index b8d8143..758058e 100644 --- a/CoreStoreTests/StorageInterfaceTests.swift +++ b/CoreStoreTests/StorageInterfaceTests.swift @@ -86,8 +86,8 @@ final class StorageInterfaceTests: XCTestCase { XCTAssertEqual(store.storeOptions, [NSSQLitePragmasOption: ["journal_mode": "WAL"]] as NSDictionary) XCTAssertEqual(store.fileURL, SQLiteStore.defaultFileURL) - XCTAssertEqual(store.mappingModelBundles, Bundle.allBundles()) - XCTAssertEqual(store.localStorageOptions, [.None]) + XCTAssertEqual(store.mappingModelBundles, Bundle.allBundles) + XCTAssertEqual(store.localStorageOptions, .none) } @objc @@ -129,7 +129,7 @@ final class StorageInterfaceTests: XCTestCase { XCTAssertEqual(store.configuration, "config1") XCTAssertEqual(store.storeOptions, [NSSQLitePragmasOption: ["journal_mode": "WAL"]] as NSDictionary) - XCTAssertEqual(store.fileURL.URLByDeletingLastPathComponent, SQLiteStore.defaultRootDirectory) + XCTAssertEqual(try! store.fileURL.deletingLastPathComponent(), SQLiteStore.defaultRootDirectory) XCTAssertEqual(store.fileURL.lastPathComponent, fileName) XCTAssertEqual(store.mappingModelBundles, bundles) XCTAssertEqual(store.localStorageOptions, [.recreateStoreOnModelMismatch]) @@ -149,9 +149,9 @@ final class StorageInterfaceTests: XCTestCase { inDomains: .userDomainMask ).first! - let legacyDefaultFileURL = legacyDefaultRootDirectory - .URLByAppendingPathComponent(DataStack.applicationName, isDirectory: false) - .URLByAppendingPathExtension("sqlite") + let legacyDefaultFileURL = try! legacyDefaultRootDirectory + .appendingPathComponent(DataStack.applicationName, isDirectory: false) + .appendingPathExtension("sqlite") XCTAssertEqual(LegacySQLiteStore.defaultRootDirectory, legacyDefaultRootDirectory) XCTAssertEqual(LegacySQLiteStore.defaultFileURL, legacyDefaultFileURL) @@ -166,8 +166,8 @@ final class StorageInterfaceTests: XCTestCase { XCTAssertEqual(store.storeOptions, [NSSQLitePragmasOption: ["journal_mode": "WAL"]] as NSDictionary) XCTAssertEqual(store.fileURL, LegacySQLiteStore.defaultFileURL) - XCTAssertEqual(store.mappingModelBundles, Bundle.allBundles()) - XCTAssertEqual(store.localStorageOptions, [.None]) + XCTAssertEqual(store.mappingModelBundles, Bundle.allBundles) + XCTAssertEqual(store.localStorageOptions, .none) } @objc @@ -209,7 +209,7 @@ final class StorageInterfaceTests: XCTestCase { XCTAssertEqual(store.configuration, "config1") XCTAssertEqual(store.storeOptions, [NSSQLitePragmasOption: ["journal_mode": "WAL"]] as NSDictionary) - XCTAssertEqual(store.fileURL.URLByDeletingLastPathComponent, LegacySQLiteStore.defaultRootDirectory) + XCTAssertEqual(try! store.fileURL.deletingLastPathComponent(), LegacySQLiteStore.defaultRootDirectory) XCTAssertEqual(store.fileURL.lastPathComponent, fileName) XCTAssertEqual(store.mappingModelBundles, bundles) XCTAssertEqual(store.localStorageOptions, [.recreateStoreOnModelMismatch]) diff --git a/CoreStoreTests/TransactionTests.swift b/CoreStoreTests/TransactionTests.swift index 01516cb..058788b 100644 --- a/CoreStoreTests/TransactionTests.swift +++ b/CoreStoreTests/TransactionTests.swift @@ -39,21 +39,21 @@ final class TransactionTests: BaseTestCase { self.prepareStack { (stack) in - let testDate = NSDate() + let testDate = Date() do { - let createExpectation = self.expectationWithDescription("create") - stack.beginSynchronous { (transaction) in + let createExpectation = self.expectation(withDescription: "create") + _ = stack.beginSynchronous { (transaction) in - let object = transaction.create(Into(TestEntity1)) - object.testEntityID = NSNumber(integer: 1) + let object = transaction.create(Into()) + object.testEntityID = NSNumber(value: 1) object.testString = "string1" object.testNumber = 100 object.testDate = testDate switch transaction.commitAndWait() { - case .Success(let hasChanges): + case .success(let hasChanges): XCTAssertTrue(hasChanges) createExpectation.fulfill() @@ -63,32 +63,32 @@ final class TransactionTests: BaseTestCase { } self.checkExpectationsImmediately() - XCTAssertEqual(stack.fetchCount(From(TestEntity1)), 1) + XCTAssertEqual(stack.fetchCount(From()), 1) - let object = stack.fetchOne(From(TestEntity1)) + let object = stack.fetchOne(From()) XCTAssertNotNil(object) - XCTAssertEqual(object?.testEntityID, NSNumber(integer: 1)) + XCTAssertEqual(object?.testEntityID, NSNumber(value: 1)) XCTAssertEqual(object?.testString, "string1") XCTAssertEqual(object?.testNumber, 100) XCTAssertEqual(object?.testDate, testDate) } do { - let updateExpectation = self.expectationWithDescription("update") - stack.beginSynchronous { (transaction) in + let updateExpectation = self.expectation(withDescription: "update") + _ = stack.beginSynchronous { (transaction) in - guard let object = transaction.fetchOne(From(TestEntity1)) else { + guard let object = transaction.fetchOne(From()) else { XCTFail() return } object.testString = "string1_edit" object.testNumber = 200 - object.testDate = NSDate.distantFuture() + object.testDate = Date.distantFuture switch transaction.commitAndWait() { - case .Success(let hasChanges): + case .success(let hasChanges): XCTAssertTrue(hasChanges) updateExpectation.fulfill() @@ -98,26 +98,26 @@ final class TransactionTests: BaseTestCase { } self.checkExpectationsImmediately() - XCTAssertEqual(stack.fetchCount(From(TestEntity1)), 1) + XCTAssertEqual(stack.fetchCount(From()), 1) - let object = stack.fetchOne(From(TestEntity1)) + let object = stack.fetchOne(From()) XCTAssertNotNil(object) - XCTAssertEqual(object?.testEntityID, NSNumber(integer: 1)) + XCTAssertEqual(object?.testEntityID, NSNumber(value: 1)) XCTAssertEqual(object?.testString, "string1_edit") XCTAssertEqual(object?.testNumber, 200) - XCTAssertEqual(object?.testDate, NSDate.distantFuture()) + XCTAssertEqual(object?.testDate, Date.distantFuture) } do { - let deleteExpectation = self.expectationWithDescription("delete") - stack.beginSynchronous { (transaction) in + let deleteExpectation = self.expectation(withDescription: "delete") + _ = stack.beginSynchronous { (transaction) in - let object = transaction.fetchOne(From(TestEntity1)) + let object = transaction.fetchOne(From()) transaction.delete(object) switch transaction.commitAndWait() { - case .Success(let hasChanges): + case .success(let hasChanges): XCTAssertTrue(hasChanges) deleteExpectation.fulfill() @@ -127,9 +127,9 @@ final class TransactionTests: BaseTestCase { } self.checkExpectationsImmediately() - XCTAssertEqual(stack.fetchCount(From(TestEntity1)), 0) + XCTAssertEqual(stack.fetchCount(From()), 0) - let object = stack.fetchOne(From(TestEntity1)) + let object = stack.fetchOne(From()) XCTAssertNil(object) } } @@ -140,21 +140,21 @@ final class TransactionTests: BaseTestCase { self.prepareStack(configurations: [nil, "Config1"]) { (stack) in - let testDate = NSDate() + let testDate = Date() do { - let createExpectation = self.expectationWithDescription("create") - stack.beginSynchronous { (transaction) in + let createExpectation = self.expectation(withDescription: "create") + _ = stack.beginSynchronous { (transaction) in let object = transaction.create(Into("Config1")) - object.testEntityID = NSNumber(integer: 1) + object.testEntityID = NSNumber(value: 1) object.testString = "string1" object.testNumber = 100 object.testDate = testDate switch transaction.commitAndWait() { - case .Success(let hasChanges): + case .success(let hasChanges): XCTAssertTrue(hasChanges) createExpectation.fulfill() @@ -169,15 +169,15 @@ final class TransactionTests: BaseTestCase { let object = stack.fetchOne(From("Config1")) XCTAssertNotNil(object) - XCTAssertEqual(object?.testEntityID, NSNumber(integer: 1)) + XCTAssertEqual(object?.testEntityID, NSNumber(value: 1)) XCTAssertEqual(object?.testString, "string1") XCTAssertEqual(object?.testNumber, 100) XCTAssertEqual(object?.testDate, testDate) } do { - let updateExpectation = self.expectationWithDescription("update") - stack.beginSynchronous { (transaction) in + let updateExpectation = self.expectation(withDescription: "update") + _ = stack.beginSynchronous { (transaction) in guard let object = transaction.fetchOne(From("Config1")) else { @@ -186,11 +186,11 @@ final class TransactionTests: BaseTestCase { } object.testString = "string1_edit" object.testNumber = 200 - object.testDate = NSDate.distantFuture() + object.testDate = Date.distantFuture switch transaction.commitAndWait() { - case .Success(let hasChanges): + case .success(let hasChanges): XCTAssertTrue(hasChanges) updateExpectation.fulfill() @@ -205,22 +205,22 @@ final class TransactionTests: BaseTestCase { let object = stack.fetchOne(From("Config1")) XCTAssertNotNil(object) - XCTAssertEqual(object?.testEntityID, NSNumber(integer: 1)) + XCTAssertEqual(object?.testEntityID, NSNumber(value: 1)) XCTAssertEqual(object?.testString, "string1_edit") XCTAssertEqual(object?.testNumber, 200) - XCTAssertEqual(object?.testDate, NSDate.distantFuture()) + XCTAssertEqual(object?.testDate, Date.distantFuture) } do { - let deleteExpectation = self.expectationWithDescription("delete") - stack.beginSynchronous { (transaction) in + let deleteExpectation = self.expectation(withDescription: "delete") + _ = stack.beginSynchronous { (transaction) in let object = transaction.fetchOne(From("Config1")) transaction.delete(object) switch transaction.commitAndWait() { - case .Success(let hasChanges): + case .success(let hasChanges): XCTAssertTrue(hasChanges) deleteExpectation.fulfill() @@ -243,41 +243,41 @@ final class TransactionTests: BaseTestCase { do { - let createDiscardExpectation = self.expectationWithDescription("create-discard") - let loggerExpectations = self.prepareLoggerExpectations([.LogWarning]) - stack.beginSynchronous { (transaction) in + let createDiscardExpectation = self.expectation(withDescription: "create-discard") + let loggerExpectations = self.prepareLoggerExpectations([.logWarning]) + _ = stack.beginSynchronous { (transaction) in - let object = transaction.create(Into(TestEntity1)) - object.testEntityID = NSNumber(integer: 1) + let object = transaction.create(Into()) + object.testEntityID = NSNumber(value: 1) object.testString = "string1" object.testNumber = 100 - object.testDate = NSDate() + object.testDate = Date() createDiscardExpectation.fulfill() self.expectLogger(loggerExpectations) } self.checkExpectationsImmediately() - XCTAssertEqual(stack.fetchCount(From(TestEntity1)), 0) + XCTAssertEqual(stack.fetchCount(From()), 0) - let object = stack.fetchOne(From(TestEntity1)) + let object = stack.fetchOne(From()) XCTAssertNil(object) } - let testDate = NSDate() + let testDate = Date() do { - let createExpectation = self.expectationWithDescription("create") - stack.beginSynchronous { (transaction) in + let createExpectation = self.expectation(withDescription: "create") + _ = stack.beginSynchronous { (transaction) in - let object = transaction.create(Into(TestEntity1)) - object.testEntityID = NSNumber(integer: 1) + let object = transaction.create(Into()) + object.testEntityID = NSNumber(value: 1) object.testString = "string1" object.testNumber = 100 object.testDate = testDate switch transaction.commitAndWait() { - case .Success(true): + case .success(true): createExpectation.fulfill() default: @@ -288,40 +288,40 @@ final class TransactionTests: BaseTestCase { } do { - let updateDiscardExpectation = self.expectationWithDescription("update-discard") - let loggerExpectations = self.prepareLoggerExpectations([.LogWarning]) - stack.beginSynchronous { (transaction) in + let updateDiscardExpectation = self.expectation(withDescription: "update-discard") + let loggerExpectations = self.prepareLoggerExpectations([.logWarning]) + _ = stack.beginSynchronous { (transaction) in - guard let object = transaction.fetchOne(From(TestEntity1)) else { + guard let object = transaction.fetchOne(From()) else { XCTFail() return } object.testString = "string1_edit" object.testNumber = 200 - object.testDate = NSDate.distantFuture() + object.testDate = Date.distantFuture updateDiscardExpectation.fulfill() self.expectLogger(loggerExpectations) } self.checkExpectationsImmediately() - XCTAssertEqual(stack.fetchCount(From(TestEntity1)), 1) + XCTAssertEqual(stack.fetchCount(From()), 1) - let object = stack.fetchOne(From(TestEntity1)) + let object = stack.fetchOne(From()) XCTAssertNotNil(object) - XCTAssertEqual(object?.testEntityID, NSNumber(integer: 1)) + XCTAssertEqual(object?.testEntityID, NSNumber(value: 1)) XCTAssertEqual(object?.testString, "string1") XCTAssertEqual(object?.testNumber, 100) XCTAssertEqual(object?.testDate, testDate) } do { - let deleteDiscardExpectation = self.expectationWithDescription("delete-discard") - let loggerExpectations = self.prepareLoggerExpectations([.LogWarning]) - stack.beginSynchronous { (transaction) in + let deleteDiscardExpectation = self.expectation(withDescription: "delete-discard") + let loggerExpectations = self.prepareLoggerExpectations([.logWarning]) + _ = stack.beginSynchronous { (transaction) in - guard let object = transaction.fetchOne(From(TestEntity1)) else { + guard let object = transaction.fetchOne(From()) else { XCTFail() return @@ -333,11 +333,11 @@ final class TransactionTests: BaseTestCase { } self.checkExpectationsImmediately() - XCTAssertEqual(stack.fetchCount(From(TestEntity1)), 1) + XCTAssertEqual(stack.fetchCount(From()), 1) - let object = stack.fetchOne(From(TestEntity1)) + let object = stack.fetchOne(From()) XCTAssertNotNil(object) - XCTAssertEqual(object?.testEntityID, NSNumber(integer: 1)) + XCTAssertEqual(object?.testEntityID, NSNumber(value: 1)) XCTAssertEqual(object?.testString, "string1") XCTAssertEqual(object?.testNumber, 100) XCTAssertEqual(object?.testDate, testDate) @@ -350,14 +350,14 @@ final class TransactionTests: BaseTestCase { self.prepareStack { (stack) in - let testDate = NSDate() + let testDate = Date() do { - let createExpectation = self.expectationWithDescription("create") + let createExpectation = self.expectation(withDescription: "create") stack.beginAsynchronous { (transaction) in - let object = transaction.create(Into(TestEntity1)) - object.testEntityID = NSNumber(integer: 1) + let object = transaction.create(Into()) + object.testEntityID = NSNumber(value: 1) object.testString = "string1" object.testNumber = 100 object.testDate = testDate @@ -366,14 +366,14 @@ final class TransactionTests: BaseTestCase { switch result { - case .Success(let hasChanges): + case .success(let hasChanges): XCTAssertTrue(hasChanges) - XCTAssertEqual(stack.fetchCount(From(TestEntity1)), 1) + XCTAssertEqual(stack.fetchCount(From()), 1) - let object = stack.fetchOne(From(TestEntity1)) + let object = stack.fetchOne(From()) XCTAssertNotNil(object) - XCTAssertEqual(object?.testEntityID, NSNumber(integer: 1)) + XCTAssertEqual(object?.testEntityID, NSNumber(value: 1)) XCTAssertEqual(object?.testString, "string1") XCTAssertEqual(object?.testNumber, 100) XCTAssertEqual(object?.testDate, testDate) @@ -387,33 +387,33 @@ final class TransactionTests: BaseTestCase { } do { - let updateExpectation = self.expectationWithDescription("update") + let updateExpectation = self.expectation(withDescription: "update") stack.beginAsynchronous { (transaction) in - guard let object = transaction.fetchOne(From(TestEntity1)) else { + guard let object = transaction.fetchOne(From()) else { XCTFail() return } object.testString = "string1_edit" object.testNumber = 200 - object.testDate = NSDate.distantFuture() + object.testDate = Date.distantFuture transaction.commit { (result) in switch result { - case .Success(let hasChanges): + case .success(let hasChanges): XCTAssertTrue(hasChanges) - XCTAssertEqual(stack.fetchCount(From(TestEntity1)), 1) + XCTAssertEqual(stack.fetchCount(From()), 1) - let object = stack.fetchOne(From(TestEntity1)) + let object = stack.fetchOne(From()) XCTAssertNotNil(object) - XCTAssertEqual(object?.testEntityID, NSNumber(integer: 1)) + XCTAssertEqual(object?.testEntityID, NSNumber(value: 1)) XCTAssertEqual(object?.testString, "string1_edit") XCTAssertEqual(object?.testNumber, 200) - XCTAssertEqual(object?.testDate, NSDate.distantFuture()) + XCTAssertEqual(object?.testDate, Date.distantFuture) updateExpectation.fulfill() default: @@ -424,22 +424,22 @@ final class TransactionTests: BaseTestCase { } do { - let deleteExpectation = self.expectationWithDescription("delete") + let deleteExpectation = self.expectation(withDescription: "delete") stack.beginAsynchronous { (transaction) in - let object = transaction.fetchOne(From(TestEntity1)) + let object = transaction.fetchOne(From()) transaction.delete(object) transaction.commit { (result) in switch result { - case .Success(let hasChanges): + case .success(let hasChanges): XCTAssertTrue(hasChanges) - XCTAssertEqual(stack.fetchCount(From(TestEntity1)), 0) + XCTAssertEqual(stack.fetchCount(From()), 0) - let object = stack.fetchOne(From(TestEntity1)) + let object = stack.fetchOne(From()) XCTAssertNil(object) deleteExpectation.fulfill() @@ -458,14 +458,14 @@ final class TransactionTests: BaseTestCase { self.prepareStack(configurations: [nil, "Config1"]) { (stack) in - let testDate = NSDate() + let testDate = Date() do { - let createExpectation = self.expectationWithDescription("create") + let createExpectation = self.expectation(withDescription: "create") stack.beginAsynchronous { (transaction) in let object = transaction.create(Into("Config1")) - object.testEntityID = NSNumber(integer: 1) + object.testEntityID = NSNumber(value: 1) object.testString = "string1" object.testNumber = 100 object.testDate = testDate @@ -474,7 +474,7 @@ final class TransactionTests: BaseTestCase { switch result { - case .Success(let hasChanges): + case .success(let hasChanges): XCTAssertTrue(hasChanges) XCTAssertEqual(stack.fetchCount(From("Config1")), 1) @@ -482,7 +482,7 @@ final class TransactionTests: BaseTestCase { let object = stack.fetchOne(From("Config1")) XCTAssertNotNil(object) - XCTAssertEqual(object?.testEntityID, NSNumber(integer: 1)) + XCTAssertEqual(object?.testEntityID, NSNumber(value: 1)) XCTAssertEqual(object?.testString, "string1") XCTAssertEqual(object?.testNumber, 100) XCTAssertEqual(object?.testDate, testDate) @@ -496,7 +496,7 @@ final class TransactionTests: BaseTestCase { } do { - let updateExpectation = self.expectationWithDescription("update") + let updateExpectation = self.expectation(withDescription: "update") stack.beginAsynchronous { (transaction) in guard let object = transaction.fetchOne(From("Config1")) else { @@ -506,13 +506,13 @@ final class TransactionTests: BaseTestCase { } object.testString = "string1_edit" object.testNumber = 200 - object.testDate = NSDate.distantFuture() + object.testDate = Date.distantFuture transaction.commit { (result) in switch result { - case .Success(let hasChanges): + case .success(let hasChanges): XCTAssertTrue(hasChanges) XCTAssertEqual(stack.fetchCount(From("Config1")), 1) @@ -520,10 +520,10 @@ final class TransactionTests: BaseTestCase { let object = stack.fetchOne(From("Config1")) XCTAssertNotNil(object) - XCTAssertEqual(object?.testEntityID, NSNumber(integer: 1)) + XCTAssertEqual(object?.testEntityID, NSNumber(value: 1)) XCTAssertEqual(object?.testString, "string1_edit") XCTAssertEqual(object?.testNumber, 200) - XCTAssertEqual(object?.testDate, NSDate.distantFuture()) + XCTAssertEqual(object?.testDate, Date.distantFuture) updateExpectation.fulfill() default: @@ -534,7 +534,7 @@ final class TransactionTests: BaseTestCase { } do { - let deleteExpectation = self.expectationWithDescription("delete") + let deleteExpectation = self.expectation(withDescription: "delete") stack.beginAsynchronous { (transaction) in let object = transaction.fetchOne(From("Config1")) @@ -544,7 +544,7 @@ final class TransactionTests: BaseTestCase { switch result { - case .Success(let hasChanges): + case .success(let hasChanges): XCTAssertTrue(hasChanges) XCTAssertEqual(stack.fetchCount(From("Config1")), 0) @@ -569,31 +569,31 @@ final class TransactionTests: BaseTestCase { do { - let createDiscardExpectation = self.expectationWithDescription("create-discard") - let loggerExpectations = self.prepareLoggerExpectations([.LogWarning]) + let createDiscardExpectation = self.expectation(withDescription: "create-discard") + let loggerExpectations = self.prepareLoggerExpectations([.logWarning]) stack.beginAsynchronous { (transaction) in - let object = transaction.create(Into(TestEntity1)) - object.testEntityID = NSNumber(integer: 1) + let object = transaction.create(Into()) + object.testEntityID = NSNumber(value: 1) object.testString = "string1" object.testNumber = 100 - object.testDate = NSDate() + object.testDate = Date() createDiscardExpectation.fulfill() self.expectLogger(loggerExpectations) } } - let testDate = NSDate() + let testDate = Date() do { - let createExpectation = self.expectationWithDescription("create") + let createExpectation = self.expectation(withDescription: "create") stack.beginAsynchronous { (transaction) in - XCTAssertEqual(transaction.fetchCount(From(TestEntity1)), 0) - XCTAssertNil(transaction.fetchOne(From(TestEntity1))) + XCTAssertEqual(transaction.fetchCount(From()), 0) + XCTAssertNil(transaction.fetchOne(From())) - let object = transaction.create(Into(TestEntity1)) - object.testEntityID = NSNumber(integer: 1) + let object = transaction.create(Into()) + object.testEntityID = NSNumber(value: 1) object.testString = "string1" object.testNumber = 100 object.testDate = testDate @@ -602,7 +602,7 @@ final class TransactionTests: BaseTestCase { switch result { - case .Success(true): + case .success(true): createExpectation.fulfill() default: @@ -613,18 +613,18 @@ final class TransactionTests: BaseTestCase { } do { - let updateDiscardExpectation = self.expectationWithDescription("update-discard") - let loggerExpectations = self.prepareLoggerExpectations([.LogWarning]) + let updateDiscardExpectation = self.expectation(withDescription: "update-discard") + let loggerExpectations = self.prepareLoggerExpectations([.logWarning]) stack.beginAsynchronous { (transaction) in - guard let object = transaction.fetchOne(From(TestEntity1)) else { + guard let object = transaction.fetchOne(From()) else { XCTFail() return } object.testString = "string1_edit" object.testNumber = 200 - object.testDate = NSDate.distantFuture() + object.testDate = Date.distantFuture updateDiscardExpectation.fulfill() self.expectLogger(loggerExpectations) @@ -632,19 +632,19 @@ final class TransactionTests: BaseTestCase { } do { - let deleteDiscardExpectation = self.expectationWithDescription("delete-discard") - let loggerExpectations = self.prepareLoggerExpectations([.LogWarning]) + let deleteDiscardExpectation = self.expectation(withDescription: "delete-discard") + let loggerExpectations = self.prepareLoggerExpectations([.logWarning]) stack.beginAsynchronous { (transaction) in - XCTAssertEqual(transaction.fetchCount(From(TestEntity1)), 1) + XCTAssertEqual(transaction.fetchCount(From()), 1) - guard let object = transaction.fetchOne(From(TestEntity1)) else { + guard let object = transaction.fetchOne(From()) else { XCTFail() return } XCTAssertNotNil(object) - XCTAssertEqual(object.testEntityID, NSNumber(integer: 1)) + XCTAssertEqual(object.testEntityID, NSNumber(value: 1)) XCTAssertEqual(object.testString, "string1") XCTAssertEqual(object.testNumber, 100) XCTAssertEqual(object.testDate, testDate) @@ -653,11 +653,11 @@ final class TransactionTests: BaseTestCase { GCDQueue.main.async { - XCTAssertEqual(stack.fetchCount(From(TestEntity1)), 1) + XCTAssertEqual(stack.fetchCount(From()), 1) - let object = stack.fetchOne(From(TestEntity1)) + let object = stack.fetchOne(From()) XCTAssertNotNil(object) - XCTAssertEqual(object?.testEntityID, NSNumber(integer: 1)) + XCTAssertEqual(object?.testEntityID, NSNumber(value: 1)) XCTAssertEqual(object?.testString, "string1") XCTAssertEqual(object?.testNumber, 100) XCTAssertEqual(object?.testDate, testDate) @@ -677,24 +677,24 @@ final class TransactionTests: BaseTestCase { let transaction = stack.beginUnsafe() - let testDate = NSDate() + let testDate = Date() do { - let object = transaction.create(Into(TestEntity1)) - object.testEntityID = NSNumber(integer: 1) + let object = transaction.create(Into()) + object.testEntityID = NSNumber(value: 1) object.testString = "string1" object.testNumber = 100 object.testDate = testDate switch transaction.commitAndWait() { - case .Success(let hasChanges): + case .success(let hasChanges): XCTAssertTrue(hasChanges) - XCTAssertEqual(stack.fetchCount(From(TestEntity1)), 1) + XCTAssertEqual(stack.fetchCount(From()), 1) - let object = stack.fetchOne(From(TestEntity1)) + let object = stack.fetchOne(From()) XCTAssertNotNil(object) - XCTAssertEqual(object?.testEntityID, NSNumber(integer: 1)) + XCTAssertEqual(object?.testEntityID, NSNumber(value: 1)) XCTAssertEqual(object?.testString, "string1") XCTAssertEqual(object?.testNumber, 100) XCTAssertEqual(object?.testDate, testDate) @@ -705,27 +705,27 @@ final class TransactionTests: BaseTestCase { } do { - guard let object = transaction.fetchOne(From(TestEntity1)) else { + guard let object = transaction.fetchOne(From()) else { XCTFail() return } object.testString = "string1_edit" object.testNumber = 200 - object.testDate = NSDate.distantFuture() + object.testDate = Date.distantFuture switch transaction.commitAndWait() { - case .Success(let hasChanges): + case .success(let hasChanges): XCTAssertTrue(hasChanges) - XCTAssertEqual(stack.fetchCount(From(TestEntity1)), 1) + XCTAssertEqual(stack.fetchCount(From()), 1) - let object = stack.fetchOne(From(TestEntity1)) + let object = stack.fetchOne(From()) XCTAssertNotNil(object) - XCTAssertEqual(object?.testEntityID, NSNumber(integer: 1)) + XCTAssertEqual(object?.testEntityID, NSNumber(value: 1)) XCTAssertEqual(object?.testString, "string1_edit") XCTAssertEqual(object?.testNumber, 200) - XCTAssertEqual(object?.testDate, NSDate.distantFuture()) + XCTAssertEqual(object?.testDate, Date.distantFuture) default: XCTFail() @@ -733,16 +733,16 @@ final class TransactionTests: BaseTestCase { } do { - let object = transaction.fetchOne(From(TestEntity1)) + let object = transaction.fetchOne(From()) transaction.delete(object) switch transaction.commitAndWait() { - case .Success(let hasChanges): + case .success(let hasChanges): XCTAssertTrue(hasChanges) - XCTAssertEqual(stack.fetchCount(From(TestEntity1)), 0) - XCTAssertNil(stack.fetchOne(From(TestEntity1))) + XCTAssertEqual(stack.fetchCount(From()), 0) + XCTAssertNil(stack.fetchOne(From())) default: XCTFail() @@ -758,25 +758,25 @@ final class TransactionTests: BaseTestCase { let transaction = stack.beginUnsafe() - let testDate = NSDate() + let testDate = Date() do { let object = transaction.create(Into("Config1")) - object.testEntityID = NSNumber(integer: 1) + object.testEntityID = NSNumber(value: 1) object.testString = "string1" object.testNumber = 100 object.testDate = testDate switch transaction.commitAndWait() { - case .Success(let hasChanges): + case .success(let hasChanges): XCTAssertTrue(hasChanges) XCTAssertEqual(stack.fetchCount(From("Config1")), 1) XCTAssertEqual(stack.fetchCount(From(nil)), 0) let object = stack.fetchOne(From("Config1")) XCTAssertNotNil(object) - XCTAssertEqual(object?.testEntityID, NSNumber(integer: 1)) + XCTAssertEqual(object?.testEntityID, NSNumber(value: 1)) XCTAssertEqual(object?.testString, "string1") XCTAssertEqual(object?.testNumber, 100) XCTAssertEqual(object?.testDate, testDate) @@ -794,21 +794,21 @@ final class TransactionTests: BaseTestCase { } object.testString = "string1_edit" object.testNumber = 200 - object.testDate = NSDate.distantFuture() + object.testDate = Date.distantFuture switch transaction.commitAndWait() { - case .Success(let hasChanges): + case .success(let hasChanges): XCTAssertTrue(hasChanges) XCTAssertEqual(stack.fetchCount(From("Config1")), 1) XCTAssertEqual(stack.fetchCount(From(nil)), 0) let object = stack.fetchOne(From("Config1")) XCTAssertNotNil(object) - XCTAssertEqual(object?.testEntityID, NSNumber(integer: 1)) + XCTAssertEqual(object?.testEntityID, NSNumber(value: 1)) XCTAssertEqual(object?.testString, "string1_edit") XCTAssertEqual(object?.testNumber, 200) - XCTAssertEqual(object?.testDate, NSDate.distantFuture()) + XCTAssertEqual(object?.testDate, Date.distantFuture) default: XCTFail() @@ -821,7 +821,7 @@ final class TransactionTests: BaseTestCase { switch transaction.commitAndWait() { - case .Success(let hasChanges): + case .success(let hasChanges): XCTAssertTrue(hasChanges) XCTAssertEqual(stack.fetchCount(From("Config1")), 0) @@ -842,33 +842,33 @@ final class TransactionTests: BaseTestCase { let transaction = stack.beginUnsafe(supportsUndo: true) do { - let object = transaction.create(Into(TestEntity1)) - object.testEntityID = NSNumber(integer: 1) + let object = transaction.create(Into()) + object.testEntityID = NSNumber(value: 1) object.testString = "string1" object.testNumber = 100 - object.testDate = NSDate() + object.testDate = Date() transaction.rollback() - XCTAssertEqual(transaction.fetchCount(From(TestEntity1)), 0) - XCTAssertNil(transaction.fetchOne(From(TestEntity1))) + XCTAssertEqual(transaction.fetchCount(From()), 0) + XCTAssertNil(transaction.fetchOne(From())) - XCTAssertEqual(stack.fetchCount(From(TestEntity1)), 0) - XCTAssertNil(stack.fetchOne(From(TestEntity1))) + XCTAssertEqual(stack.fetchCount(From()), 0) + XCTAssertNil(stack.fetchOne(From())) } - let testDate = NSDate() + let testDate = Date() do { - let object = transaction.create(Into(TestEntity1)) - object.testEntityID = NSNumber(integer: 1) + let object = transaction.create(Into()) + object.testEntityID = NSNumber(value: 1) object.testString = "string1" object.testNumber = 100 object.testDate = testDate switch transaction.commitAndWait() { - case .Success(true): + case .success(true): break default: @@ -878,21 +878,21 @@ final class TransactionTests: BaseTestCase { do { - guard let object = transaction.fetchOne(From(TestEntity1)) else { + guard let object = transaction.fetchOne(From()) else { XCTFail() return } object.testString = "string1_edit" object.testNumber = 200 - object.testDate = NSDate.distantFuture() + object.testDate = Date.distantFuture transaction.rollback() - XCTAssertEqual(transaction.fetchCount(From(TestEntity1)), 1) - if let object = transaction.fetchOne(From(TestEntity1)) { + XCTAssertEqual(transaction.fetchCount(From()), 1) + if let object = transaction.fetchOne(From()) { - XCTAssertEqual(object.testEntityID, NSNumber(integer: 1)) + XCTAssertEqual(object.testEntityID, NSNumber(value: 1)) XCTAssertEqual(object.testString, "string1") XCTAssertEqual(object.testNumber, 100) XCTAssertEqual(object.testDate, testDate) @@ -902,10 +902,10 @@ final class TransactionTests: BaseTestCase { XCTFail() } - XCTAssertEqual(stack.fetchCount(From(TestEntity1)), 1) - if let object = stack.fetchOne(From(TestEntity1)) { + XCTAssertEqual(stack.fetchCount(From()), 1) + if let object = stack.fetchOne(From()) { - XCTAssertEqual(object.testEntityID, NSNumber(integer: 1)) + XCTAssertEqual(object.testEntityID, NSNumber(value: 1)) XCTAssertEqual(object.testString, "string1") XCTAssertEqual(object.testNumber, 100) XCTAssertEqual(object.testDate, testDate) @@ -918,7 +918,7 @@ final class TransactionTests: BaseTestCase { do { - guard let object = transaction.fetchOne(From(TestEntity1)) else { + guard let object = transaction.fetchOne(From()) else { XCTFail() return @@ -927,10 +927,10 @@ final class TransactionTests: BaseTestCase { transaction.rollback() - XCTAssertEqual(transaction.fetchCount(From(TestEntity1)), 1) - if let object = transaction.fetchOne(From(TestEntity1)) { + XCTAssertEqual(transaction.fetchCount(From()), 1) + if let object = transaction.fetchOne(From()) { - XCTAssertEqual(object.testEntityID, NSNumber(integer: 1)) + XCTAssertEqual(object.testEntityID, NSNumber(value: 1)) XCTAssertEqual(object.testString, "string1") XCTAssertEqual(object.testNumber, 100) XCTAssertEqual(object.testDate, testDate) @@ -940,10 +940,10 @@ final class TransactionTests: BaseTestCase { XCTFail() } - XCTAssertEqual(stack.fetchCount(From(TestEntity1)), 1) - if let object = stack.fetchOne(From(TestEntity1)) { + XCTAssertEqual(stack.fetchCount(From()), 1) + if let object = stack.fetchOne(From()) { - XCTAssertEqual(object.testEntityID, NSNumber(integer: 1)) + XCTAssertEqual(object.testEntityID, NSNumber(value: 1)) XCTAssertEqual(object.testString, "string1") XCTAssertEqual(object.testNumber, 100) XCTAssertEqual(object.testDate, testDate) diff --git a/CoreStoreTests/TweakTests.swift b/CoreStoreTests/TweakTests.swift index 904fa11..4c02bf3 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 = NSFetchRequest() tweak.applyToFetchRequest(request) XCTAssertEqual(request.fetchOffset, 100) XCTAssertEqual(request.fetchLimit, 200) diff --git a/CoreStoreTests/WhereTests.swift b/CoreStoreTests/WhereTests.swift index e36d70c..079fee9 100644 --- a/CoreStoreTests/WhereTests.swift +++ b/CoreStoreTests/WhereTests.swift @@ -98,7 +98,7 @@ final class WhereTests: XCTestCase { let notWhere = !whereClause1 let notPredicate = CompoundPredicate( - type: .NotPredicateType, + type: .not, subpredicates: [whereClause1.predicate] ) XCTAssertEqual(notWhere.predicate, notPredicate) @@ -108,10 +108,10 @@ final class WhereTests: XCTestCase { let andWhere = whereClause1 && whereClause2 && whereClause3 let andPredicate = CompoundPredicate( - type: .AndPredicateType, + type: .and, subpredicates: [ CompoundPredicate( - type: .AndPredicateType, + type: .and, subpredicates: [whereClause1.predicate, whereClause2.predicate] ), whereClause3.predicate @@ -124,10 +124,10 @@ final class WhereTests: XCTestCase { let orWhere = whereClause1 || whereClause2 || whereClause3 let orPredicate = CompoundPredicate( - type: .OrPredicateType, + type: .or, subpredicates: [ CompoundPredicate( - type: .OrPredicateType, + type: .or, subpredicates: [whereClause1.predicate, whereClause2.predicate] ), whereClause3.predicate @@ -142,7 +142,7 @@ final class WhereTests: XCTestCase { dynamic func test_ThatWhereClauses_ApplyToFetchRequestsCorrectly() { let whereClause = Where("key", isEqualTo: "value") - let request = NSFetchRequest() + let request = NSFetchRequest() whereClause.applyToFetchRequest(request) XCTAssertNotNil(request.predicate) XCTAssertEqual(request.predicate, whereClause.predicate) diff --git a/README.md b/README.md index 320e8fd..41f49b5 100644 --- a/README.md +++ b/README.md @@ -118,14 +118,14 @@ CoreStore.addStorage( Starting transactions: ```swift CoreStore.beginAsynchronous { (transaction) -> Void in - let person = transaction.create(Into(MyPersonEntity)) + let person = transaction.create(Into()) person.name = "John Smith" person.age = 42 transaction.commit { (result) -> Void in switch result { - case .Success(let hasChanges): print("success!") - case .Failure(let error): print(error) + case .success(let hasChanges): print("success!") + case .failure(let error): print(error) } } } @@ -133,15 +133,15 @@ CoreStore.beginAsynchronous { (transaction) -> Void in Fetching objects (simple): ```swift -let people = CoreStore.fetchAll(From(MyPersonEntity)) +let people = CoreStore.fetchAll(From()) ``` Fetching objects (complex): ```swift let people = CoreStore.fetchAll( - From(MyPersonEntity), + From(), Where("age > 30"), - OrderBy(.Ascending("name"), .Descending("age")), + OrderBy(.ascending("name"), .descending("age")), Tweak { (fetchRequest) -> Void in fetchRequest.includesPendingChanges = false } @@ -151,8 +151,8 @@ let people = CoreStore.fetchAll( Querying values: ```swift let maxAge = CoreStore.queryValue( - From(MyPersonEntity), - Select(.Maximum("age")) + From(), + Select(.maximum("age")) ) ``` @@ -210,9 +210,9 @@ let migrationProgress = dataStack.addStorage( ), completion: { (result) -> Void in switch result { - case .Success(let storage): + case .success(let storage): print("Successfully added sqlite store: \(storage)" - case .Failure(let error): + case .failure(let error): print("Failed adding sqlite store with error: \(error)" } } @@ -334,8 +334,8 @@ CoreStore.addStorage(, storage, completion: { result in switch result { - case .Success(let storage): // ... - case .Failure(let error): // ... + case .success(let storage): // ... + case .failure(let error): // ... } } ) @@ -365,8 +365,8 @@ CoreStore.addStorage(, storage, completion: { result in switch result { - case .Success(let storage): // ... You may also call storage.addObserver(_:) here - case .Failure(let error): // ... + case .success(let storage): // ... You may also call storage.addObserver(_:) here + case .failure(let error): // ... } } ) @@ -395,9 +395,9 @@ let migrationProgress: NSProgress? = try dataStack.addStorage( ), completion: { (result) -> Void in switch result { - case .Success(let storage): + case .success(let storage): print("Successfully added sqlite store: \(storage)") - case .Failure(let error): + case .failure(let error): print("Failed adding sqlite store with error: \(error)") } } @@ -555,7 +555,7 @@ You've seen how to create transactions, but we have yet to see how to make *crea The `create(...)` method accepts an `Into` clause which specifies the entity for the object you want to create: ```swift -let person = transaction.create(Into(MyPersonEntity)) +let person = transaction.create(Into()) ``` While the syntax is straightforward, CoreStore does not just naively insert a new object. This single line does the following: - Checks that the entity type exists in any of the transaction's parent persistent store @@ -578,7 +578,7 @@ Note that if you do explicitly specify the configuration name, CoreStore will on After creating an object from the transaction, you can simply update its properties as normal: ```swift CoreStore.beginAsynchronous { (transaction) -> Void in - let person = transaction.create(Into(MyPersonEntity)) + let person = transaction.create(Into()) person.name = "John Smith" person.age = 30 transaction.commit() @@ -588,7 +588,7 @@ To update an existing object, fetch the object's instance from the transaction: ```swift CoreStore.beginAsynchronous { (transaction) -> Void in let person = transaction.fetchOne( - From(MyPersonEntity), + From(), Where("name", isEqualTo: "Jane Smith") ) person.age = person.age + 1 @@ -650,7 +650,7 @@ If you do not have references yet to the objects to be deleted, transactions hav ```swift CoreStore.beginAsynchronous { (transaction) -> Void in transaction.deleteAll( - From(MyPersonEntity) + From(), Where("age > 30") ) transaction.commit() @@ -688,7 +688,7 @@ var peopleIDs: [NSManagedObjectID] = // ... CoreStore.beginAsynchronous { (transaction) -> Void in let jane = transaction.fetchOne( - From(MyPersonEntity), + From(), Where("name", isEqualTo: "Jane Smith") ) jane.friends = NSSet(array: transaction.fetchExisting(peopleIDs)!) @@ -710,7 +710,7 @@ If you have many attributes, you don't want to keep repeating this mapping every CoreStore.beginAsynchronous { (transaction) -> Void in let json: [String: AnyObject] = // ... try! transaction.importObject( - Into(MyPersonEntity), + Into(), source: json ) transaction.commit() @@ -750,7 +750,7 @@ This lets us call `importObject(_:source:)` with any `[String: AnyObject]` type CoreStore.beginAsynchronous { (transaction) -> Void in let json: [String: AnyObject] = // ... try! transaction.importObject( - Into(MyPersonEntity), + Into(), source: json ) // ... @@ -769,7 +769,7 @@ Transactions also let you import multiple objects at once using the `importObjec CoreStore.beginAsynchronous { (transaction) -> Void in let jsonArray: [[String: AnyObject]] = // ... try! transaction.importObjects( - Into(MyPersonEntity), + Into(), sourceArray: jsonArray ) // ... @@ -794,7 +794,7 @@ CoreStore.beginAsynchronous { (transaction) -> Void in let jsonArray: [[String: AnyObject]] = // ... do { try transaction.importObjects( - Into(MyPersonEntity), + Into(), sourceArray: jsonArray ) } @@ -844,7 +844,7 @@ You can then create/update an object by calling a transaction's `importUniqueObj CoreStore.beginAsynchronous { (transaction) -> Void in let json: [String: AnyObject] = // ... try! transaction.importUniqueObject( - Into(MyPersonEntity), + Into(), source: json ) // ... @@ -856,7 +856,7 @@ or multiple objects at once with the `importUniqueObjects(...)` method: CoreStore.beginAsynchronous { (transaction) -> Void in let jsonArray: [[String: AnyObject]] = // ... try! transaction.importUniqueObjects( - Into(MyPersonEntity), + Into(), sourceArray: jsonArray ) // ... @@ -880,10 +880,10 @@ Before we dive in, be aware that CoreStore distinguishes between *fetching* and #### `From` clause The search conditions for fetches and queries are specified using *clauses*. All fetches and queries require a `From` clause that indicates the target entity type: ```swift -let people = CoreStore.fetchAll(From(MyPersonEntity)) +let people = CoreStore.fetchAll(From()) // CoreStore.fetchAll(From()) works as well ``` -`people` in the example above will be of type `[MyPersonEntity]`. The `From(MyPersonEntity)` clause indicates a fetch to all persistent stores that `MyPersonEntity` belong to. +`people` in the example above will be of type `[MyPersonEntity]`. The `From()` clause indicates a fetch to all persistent stores that `MyPersonEntity` belong to. If the entity exists in multiple configurations and you need to only search from a particular configuration, indicate in the `From` clause the configuration name for the destination persistent store: ```swift @@ -912,11 +912,11 @@ Each method's purpose is straightforward, but we need to understand how to set t The `Where` clause is CoreStore's `NSPredicate` wrapper. It specifies the search filter to use when fetching (or querying). It implements all initializers that `NSPredicate` does (except for `-predicateWithBlock:`, which Core Data does not support): ```swift var people = CoreStore.fetchAll( - From(MyPersonEntity), + From(), Where("%K > %d", "age", 30) // string format initializer ) people = CoreStore.fetchAll( - From(MyPersonEntity), + From(), Where(true) // boolean initializer ) ``` @@ -924,14 +924,14 @@ If you do have an existing `NSPredicate` instance already, you can pass that to ```swift let predicate = NSPredicate(...) var people = CoreStore.fetchAll( - From(MyPersonEntity), + From(), Where(predicate) // predicate initializer ) ``` `Where` clauses also implement the `&&`, `||`, and `!` logic operators, so you can provide logical conditions without writing too much `AND`, `OR`, and `NOT` strings: ```swift var people = CoreStore.fetchAll( - From(MyPersonEntity), + From(), Where("age > %d", 30) && Where("gender == %@", "M") ) ``` @@ -942,20 +942,20 @@ If you do not provide a `Where` clause, all objects that belong to the specified The `OrderBy` clause is CoreStore's `NSSortDescriptor` wrapper. Use it to specify attribute keys in which to sort the fetch (or query) results with. ```swift var mostValuablePeople = CoreStore.fetchAll( - From(MyPersonEntity), - OrderBy(.Descending("rating"), .Ascending("surname")) + From(), + OrderBy(.descending("rating"), .ascending("surname")) ) ``` -As seen above, `OrderBy` accepts a list of `SortKey` enumeration values, which can be either `.Ascending` or `.Descending`. +As seen above, `OrderBy` accepts a list of `SortKey` enumeration values, which can be either `.ascending` or `.descending`. You can use the `+` and `+=` operator to append `OrderBy`s together. This is useful when sorting conditionally: ```swift -var orderBy = OrderBy(.Descending("rating")) +var orderBy = OrderBy(.descending("rating")) if sortFromYoungest { - orderBy += OrderBy(.Ascending("age")) + orderBy += OrderBy(.ascending("age")) } var mostValuablePeople = CoreStore.fetchAll( - From(MyPersonEntity), + From(), orderBy ) ``` @@ -965,9 +965,9 @@ var mostValuablePeople = CoreStore.fetchAll( The `Tweak` clause lets you, uh, *tweak* the fetch (or query). `Tweak` exposes the `NSFetchRequest` in a closure where you can make changes to its properties: ```swift var people = CoreStore.fetchAll( - From(MyPersonEntity), + From(), Where("age > %d", 30), - OrderBy(.Ascending("surname")), + OrderBy(.ascending("surname")), Tweak { (fetchRequest) -> Void in fetchRequest.includesPendingChanges = false fetchRequest.returnsObjectsAsFaults = false @@ -996,7 +996,7 @@ Setting up the `From`, `Where`, `OrderBy`, and `Tweak` clauses is similar to how The `Select` clause specifies the target attribute/aggregate key, as well as the expected return type: ```swift let johnsAge = CoreStore.queryValue( - From(MyPersonEntity), + From(), Select("age"), Where("name == %@", "John Smith") ) @@ -1021,29 +1021,29 @@ The example above queries the "age" property for the first object that matches t For `queryAttributes(...)`, only `NSDictionary` is valid for `Select`, thus you are allowed to omit the generic type: ```swift let allAges = CoreStore.queryAttributes( - From(MyPersonEntity), + From(), Select("age") ) ``` If you only need a value for a particular attribute, you can just specify the key name (like we did with `Select("age")`), but several aggregate functions can also be used as parameter to `Select`: -- `.Average(...)` -- `.Count(...)` -- `.Maximum(...)` -- `.Minimum(...)` -- `.Sum(...)` +- `.average(...)` +- `.count(...)` +- `.maximum(...)` +- `.minimum(...)` +- `.sum(...)` ```swift let oldestAge = CoreStore.queryValue( - From(MyPersonEntity), - Select(.Maximum("age")) + From(), + Select(.maximum("age")) ) ``` For `queryAttributes(...)` which returns an array of dictionaries, you can specify multiple attributes/aggregates to `Select`: ```swift let personJSON = CoreStore.queryAttributes( - From(MyPersonEntity), + From(), Select("name", "age") ) ``` @@ -1063,8 +1063,8 @@ let personJSON = CoreStore.queryAttributes( You can also include an aggregate as well: ```swift let personJSON = CoreStore.queryAttributes( - From(MyPersonEntity), - Select("name", .Count("friends")) + From(), + Select("name", .count("friends")) ) ``` which returns: @@ -1083,8 +1083,8 @@ which returns: The `"count(friends)"` key name was automatically used by CoreStore, but you can specify your own key alias if you need: ```swift let personJSON = CoreStore.queryAttributes( - From(MyPersonEntity), - Select("name", .Count("friends", As: "friendsCount")) + From(), + Select("name", .count("friends", As: "friendsCount")) ) ``` which now returns: @@ -1106,8 +1106,8 @@ which now returns: The `GroupBy` clause lets you group results by a specified attribute/aggregate. This is useful only for `queryAttributes(...)` since `queryValue(...)` just returns the first value. ```swift let personJSON = CoreStore.queryAttributes( - From(MyPersonEntity), - Select("age", .Count("age", As: "count")), + From(), + Select("age", .count("age", As: "count")), GroupBy("age") ) ``` @@ -1232,9 +1232,9 @@ Including `ListObserver`, there are 3 observer protocols you can implement depen We then need to create a `ListMonitor` instance and register our `ListObserver` as an observer: ```swift self.monitor = CoreStore.monitorList( - From(MyPersonEntity), + From(), Where("age > 30"), - OrderBy(.Ascending("name")), + OrderBy(.ascending("name")), Tweak { (fetchRequest) -> Void in fetchRequest.fetchBatchSize = 20 } @@ -1253,10 +1253,10 @@ let firstPerson = self.monitor[0] If the list needs to be grouped into sections, create the `ListMonitor` instance with the `monitorSectionedList(...)` method and a `SectionBy` clause: ```swift self.monitor = CoreStore.monitorSectionedList( - From(MyPersonEntity), + From(), SectionBy("age"), Where("gender", isEqualTo: "M"), - OrderBy(.Ascending("age"), .Ascending("name")), + OrderBy(.ascending("age"), .ascending("name")), Tweak { (fetchRequest) -> Void in fetchRequest.fetchBatchSize = 20 } @@ -1267,11 +1267,11 @@ A list controller created this way will group the objects by the attribute key i The `SectionBy` clause can also be passed a closure to transform the section name into a displayable string: ```swift self.monitor = CoreStore.monitorSectionedList( - From(MyPersonEntity), + From(), SectionBy("age") { (sectionName) -> String? in "\(sectionName) years old" }, - OrderBy(.Ascending("age"), .Ascending("name")) + OrderBy(.ascending("age"), .ascending("name")) ) ``` This is useful when implementing a `UITableViewDelegate`'s section header: @@ -1313,8 +1313,8 @@ CoreStore.beginAsynchronous { (transaction) in // ... transaction.commit { (result) in switch result { - case .Success(let hasChanges): print(hasChanges) - case .Failure(let error): print(error) + case .success(let hasChanges): print(hasChanges) + case .failure(let error): print(error) } } } diff --git a/Sources/Convenience/NSManagedObject+Convenience.swift b/Sources/Convenience/NSManagedObject+Convenience.swift index 6078a47..067b07c 100644 --- a/Sources/Convenience/NSManagedObject+Convenience.swift +++ b/Sources/Convenience/NSManagedObject+Convenience.swift @@ -38,7 +38,6 @@ public extension NSManagedObject { - returns: the primitive value for the KVC key */ @nonobjc - @warn_unused_result public func accessValueForKVCKey(_ KVCKey: KeyPath) -> AnyObject? { self.willAccessValue(forKey: KVCKey) diff --git a/Sources/CoreStoreError.swift b/Sources/CoreStoreError.swift index 7dbc2eb..076f41a 100644 --- a/Sources/CoreStoreError.swift +++ b/Sources/CoreStoreError.swift @@ -75,7 +75,7 @@ public enum CoreStoreError: ErrorProtocol, Hashable { return CoreStoreErrorCode.unknownError.rawValue case .differentStorageExistsAtURL: - return CoreStoreErrorCode.differentPersistentStoreExistsAtURL.rawValue + return CoreStoreErrorCode.differentStorageExistsAtURL.rawValue case .mappingModelNotFound: return CoreStoreErrorCode.mappingModelNotFound.rawValue @@ -174,7 +174,7 @@ public enum CoreStoreErrorCode: Int { /** The `NSPersistentStore` could note be initialized because another store existed at the specified `NSURL`. */ - case differentPersistentStoreExistsAtURL + case differentStorageExistsAtURL /** An `NSMappingModel` could not be found for a specific source and destination model versions. diff --git a/Sources/Fetching and Querying/BaseDataTransaction+Querying.swift b/Sources/Fetching and Querying/BaseDataTransaction+Querying.swift index b4498d0..df36237 100644 --- a/Sources/Fetching and Querying/BaseDataTransaction+Querying.swift +++ b/Sources/Fetching and Querying/BaseDataTransaction+Querying.swift @@ -37,7 +37,6 @@ public extension BaseDataTransaction { - parameter object: a reference to the object created/fetched outside the transaction - returns: the `NSManagedObject` instance if the object exists in the transaction, or `nil` if not found. */ - @warn_unused_result public func fetchExisting(_ object: T) -> T? { do { @@ -56,7 +55,6 @@ public extension BaseDataTransaction { - parameter objectID: the `NSManagedObjectID` for the object - returns: the `NSManagedObject` instance if the object exists in the transaction, or `nil` if not found. */ - @warn_unused_result public func fetchExisting(_ objectID: NSManagedObjectID) -> T? { do { @@ -75,7 +73,6 @@ public extension BaseDataTransaction { - parameter objects: an array of `NSManagedObject`s created/fetched outside the transaction - returns: the `NSManagedObject` array for objects that exists in the transaction */ - @warn_unused_result public func fetchExisting(_ objects: S) -> [T] { return objects.flatMap { (try? self.context.existingObject(with: $0.objectID)) as? T } @@ -87,7 +84,6 @@ public extension BaseDataTransaction { - parameter objectIDs: the `NSManagedObjectID` array for the objects - returns: the `NSManagedObject` array for objects that exists in the transaction */ - @warn_unused_result public func fetchExisting(_ objectIDs: S) -> [T] { return objectIDs.flatMap { (try? self.context.existingObject(with: $0)) as? T } @@ -100,7 +96,6 @@ public extension BaseDataTransaction { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: the first `NSManagedObject` instance that satisfies the specified `FetchClause`s */ - @warn_unused_result public func fetchOne(_ from: From, _ fetchClauses: FetchClause...) -> T? { return self.fetchOne(from, fetchClauses) @@ -113,7 +108,6 @@ public extension BaseDataTransaction { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: the first `NSManagedObject` instance that satisfies the specified `FetchClause`s */ - @warn_unused_result public func fetchOne(_ from: From, _ fetchClauses: [FetchClause]) -> T? { CoreStore.assert( @@ -130,7 +124,6 @@ public extension BaseDataTransaction { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: all `NSManagedObject` instances that satisfy the specified `FetchClause`s */ - @warn_unused_result public func fetchAll(_ from: From, _ fetchClauses: FetchClause...) -> [T]? { return self.fetchAll(from, fetchClauses) @@ -143,7 +136,6 @@ public extension BaseDataTransaction { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: all `NSManagedObject` instances that satisfy the specified `FetchClause`s */ - @warn_unused_result public func fetchAll(_ from: From, _ fetchClauses: [FetchClause]) -> [T]? { CoreStore.assert( @@ -160,7 +152,6 @@ public extension BaseDataTransaction { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: the number `NSManagedObject`s that satisfy the specified `FetchClause`s */ - @warn_unused_result public func fetchCount(_ from: From, _ fetchClauses: FetchClause...) -> Int? { return self.fetchCount(from, fetchClauses) @@ -173,7 +164,6 @@ public extension BaseDataTransaction { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: the number `NSManagedObject`s that satisfy the specified `FetchClause`s */ - @warn_unused_result public func fetchCount(_ from: From, _ fetchClauses: [FetchClause]) -> Int? { CoreStore.assert( @@ -191,7 +181,6 @@ public extension BaseDataTransaction { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: the `NSManagedObjectID` for the first `NSManagedObject` that satisfies the specified `FetchClause`s */ - @warn_unused_result public func fetchObjectID(_ from: From, _ fetchClauses: FetchClause...) -> NSManagedObjectID? { return self.fetchObjectID(from, fetchClauses) @@ -204,7 +193,6 @@ public extension BaseDataTransaction { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: the `NSManagedObjectID` for the first `NSManagedObject` that satisfies the specified `FetchClause`s */ - @warn_unused_result public func fetchObjectID(_ from: From, _ fetchClauses: [FetchClause]) -> NSManagedObjectID? { CoreStore.assert( @@ -221,7 +209,6 @@ public extension BaseDataTransaction { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: the `NSManagedObjectID` for all `NSManagedObject`s that satisfy the specified `FetchClause`s */ - @warn_unused_result public func fetchObjectIDs(_ from: From, _ fetchClauses: FetchClause...) -> [NSManagedObjectID]? { return self.fetchObjectIDs(from, fetchClauses) @@ -234,7 +221,6 @@ public extension BaseDataTransaction { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: the `NSManagedObjectID` for all `NSManagedObject`s that satisfy the specified `FetchClause`s */ - @warn_unused_result public func fetchObjectIDs(_ from: From, _ fetchClauses: [FetchClause]) -> [NSManagedObjectID]? { CoreStore.assert( @@ -251,6 +237,7 @@ public extension BaseDataTransaction { - parameter deleteClauses: a series of `DeleteClause` instances for the delete request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: the number of `NSManagedObject`s deleted */ + @discardableResult public func deleteAll(_ from: From, _ deleteClauses: DeleteClause...) -> Int? { CoreStore.assert( @@ -268,6 +255,7 @@ public extension BaseDataTransaction { - parameter deleteClauses: a series of `DeleteClause` instances for the delete request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: the number of `NSManagedObject`s deleted */ + @discardableResult public func deleteAll(_ from: From, _ deleteClauses: [DeleteClause]) -> Int? { CoreStore.assert( @@ -288,7 +276,6 @@ public extension BaseDataTransaction { - parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - returns: the result of the the query. The type of the return value is specified by the generic type of the `Select` parameter. */ - @warn_unused_result public func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: QueryClause...) -> U? { CoreStore.assert( @@ -309,7 +296,6 @@ public extension BaseDataTransaction { - parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - returns: the result of the the query. The type of the return value is specified by the generic type of the `Select` parameter. */ - @warn_unused_result public func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: [QueryClause]) -> U? { CoreStore.assert( @@ -330,7 +316,6 @@ public extension BaseDataTransaction { - parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - returns: the result of the the query. The type of the return value is specified by the generic type of the `Select` parameter. */ - @warn_unused_result public func queryAttributes(_ from: From, _ selectClause: Select, _ queryClauses: QueryClause...) -> [[NSString: AnyObject]]? { CoreStore.assert( @@ -351,7 +336,6 @@ public extension BaseDataTransaction { - parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - returns: the result of the the query. The type of the return value is specified by the generic type of the `Select` parameter. */ - @warn_unused_result public func queryAttributes(_ from: From, _ selectClause: Select, _ queryClauses: [QueryClause]) -> [[NSString: AnyObject]]? { CoreStore.assert( diff --git a/Sources/Fetching and Querying/Concrete Clauses/From.swift b/Sources/Fetching and Querying/Concrete Clauses/From.swift index ff2b2ec..0dca42e 100644 --- a/Sources/Fetching and Querying/Concrete Clauses/From.swift +++ b/Sources/Fetching and Querying/Concrete Clauses/From.swift @@ -32,7 +32,7 @@ import CoreData /** A `From` clause specifies the source entity and source persistent store for fetch and query methods. A common usage is to just indicate the entity: ``` - let person = transaction.fetchOne(From(MyPersonEntity)) + let person = transaction.fetchOne(From()) ``` For cases where multiple `NSPersistentStore`s contain the same entity, the source configuration's name needs to be specified as well: ``` @@ -88,7 +88,7 @@ public struct From { CoreStore.assert( entityClass is T.Type, - "Attempted to create generic type \(cs_typeName(From)) with entity class \(cs_typeName(entityClass))" + "Attempted to create generic type \(cs_typeName(From.self)) with entity class \(cs_typeName(entityClass))" ) self.init(entityClass: entityClass, configurations: nil) } @@ -163,7 +163,7 @@ public struct From { CoreStore.assert( entityClass is T.Type, - "Attempted to create generic type \(cs_typeName(From)) with entity class \(cs_typeName(entityClass))" + "Attempted to create generic type \(cs_typeName(From.self)) with entity class \(cs_typeName(entityClass))" ) self.init(entityClass: entityClass, configurations: [configuration] + otherConfigurations) } @@ -181,7 +181,7 @@ public struct From { CoreStore.assert( entityClass is T.Type, - "Attempted to create generic type \(cs_typeName(From)) with entity class \(cs_typeName(entityClass))" + "Attempted to create generic type \(cs_typeName(From.self)) with entity class \(cs_typeName(entityClass))" ) self.init(entityClass: entityClass, configurations: configurations) } @@ -189,7 +189,6 @@ public struct From { // MARK: Internal - @warn_unused_result internal func applyToFetchRequest(_ fetchRequest: NSFetchRequest, context: NSManagedObjectContext, applyAffectedStores: Bool = true) -> Bool { fetchRequest.entity = context.entityDescriptionForEntityClass(self.entityClass) diff --git a/Sources/Fetching and Querying/Concrete Clauses/GroupBy.swift b/Sources/Fetching and Querying/Concrete Clauses/GroupBy.swift index 1676e91..095cdbd 100644 --- a/Sources/Fetching and Querying/Concrete Clauses/GroupBy.swift +++ b/Sources/Fetching and Querying/Concrete Clauses/GroupBy.swift @@ -96,7 +96,6 @@ public struct GroupBy: QueryClause, Hashable { // MARK: - GroupBy: Equatable -@warn_unused_result public func == (lhs: GroupBy, rhs: GroupBy) -> Bool { return lhs.keyPaths == rhs.keyPaths diff --git a/Sources/Fetching and Querying/Concrete Clauses/OrderBy.swift b/Sources/Fetching and Querying/Concrete Clauses/OrderBy.swift index e5ce8f8..420fd1a 100644 --- a/Sources/Fetching and Querying/Concrete Clauses/OrderBy.swift +++ b/Sources/Fetching and Querying/Concrete Clauses/OrderBy.swift @@ -27,12 +27,12 @@ import Foundation import CoreData -public func +(left: OrderBy, right: OrderBy) -> OrderBy { +public func + (left: OrderBy, right: OrderBy) -> OrderBy { return OrderBy(left.sortDescriptors + right.sortDescriptors) } -public func +=(left: inout OrderBy, right: OrderBy) { +public func += (left: inout OrderBy, right: OrderBy) { left = left + right } @@ -163,7 +163,6 @@ public struct OrderBy: FetchClause, QueryClause, DeleteClause, Hashable { // MARK: - OrderBy: Equatable -@warn_unused_result public func == (lhs: OrderBy, rhs: OrderBy) -> Bool { return lhs.sortDescriptors == rhs.sortDescriptors diff --git a/Sources/Fetching and Querying/Concrete Clauses/Select.swift b/Sources/Fetching and Querying/Concrete Clauses/Select.swift index 65a7a8f..5727f60 100644 --- a/Sources/Fetching and Querying/Concrete Clauses/Select.swift +++ b/Sources/Fetching and Querying/Concrete Clauses/Select.swift @@ -70,15 +70,15 @@ public enum SelectTerm: StringLiteralConvertible, Hashable { Provides a `SelectTerm` to a `Select` clause for querying an entity attribute. A shorter way to do the same is to assign from the string keypath directly: ``` let fullName = CoreStore.queryValue( - From(MyPersonEntity), - Select(.Attribute("fullName")), + From(), + Select(.attribute("fullName")), Where("employeeID", isEqualTo: 1111) ) ``` is equivalent to: ``` let fullName = CoreStore.queryValue( - From(MyPersonEntity), + From(), Select("fullName"), Where("employeeID", isEqualTo: 1111) ) @@ -96,8 +96,8 @@ public enum SelectTerm: StringLiteralConvertible, Hashable { Provides a `SelectTerm` to a `Select` clause for querying the average value of an attribute. ``` let averageAge = CoreStore.queryValue( - From(MyPersonEntity), - Select(.Average("age")) + From(), + Select(.average("age")) ) ``` @@ -119,8 +119,8 @@ public enum SelectTerm: StringLiteralConvertible, Hashable { Provides a `SelectTerm` to a `Select` clause for a count query. ``` let numberOfEmployees = CoreStore.queryValue( - From(MyPersonEntity), - Select(.Count("employeeID")) + From(), + Select(.count("employeeID")) ) ``` @@ -142,8 +142,8 @@ public enum SelectTerm: StringLiteralConvertible, Hashable { Provides a `SelectTerm` to a `Select` clause for querying the maximum value for an attribute. ``` let maximumAge = CoreStore.queryValue( - From(MyPersonEntity), - Select(.Maximum("age")) + From(), + Select(.maximum("age")) ) ``` @@ -165,8 +165,8 @@ public enum SelectTerm: StringLiteralConvertible, Hashable { Provides a `SelectTerm` to a `Select` clause for querying the minimum value for an attribute. ``` let minimumAge = CoreStore.queryValue( - From(MyPersonEntity), - Select(.Minimum("age")) + From(), + Select(.minimum("age")) ) ``` @@ -188,8 +188,8 @@ public enum SelectTerm: StringLiteralConvertible, Hashable { Provides a `SelectTerm` to a `Select` clause for querying the sum value for an attribute. ``` let totalAge = CoreStore.queryValue( - From(MyPersonEntity), - Select(.Sum("age")) + From(), + Select(.sum("age")) ) ``` @@ -211,7 +211,7 @@ public enum SelectTerm: StringLiteralConvertible, Hashable { Provides a `SelectTerm` to a `Select` clause for querying the `NSManagedObjectID`. ``` let objectID = CoreStore.queryValue( - From(MyPersonEntity), + From(), Select(), Where("employeeID", isEqualTo: 1111) ) @@ -276,7 +276,6 @@ public enum SelectTerm: StringLiteralConvertible, Hashable { // MARK: - SelectTerm: Equatable -@warn_unused_result public func == (lhs: SelectTerm, rhs: SelectTerm) -> Bool { switch (lhs, rhs) { @@ -308,15 +307,15 @@ public func == (lhs: SelectTerm, rhs: SelectTerm) -> Bool { You can bind the return type by specializing the initializer: ``` let maximumAge = CoreStore.queryValue( - From(MyPersonEntity), - Select(.Maximum("age")) + From(), + Select(.maximum("age")) ) ``` or by casting the type of the return value: ``` let maximumAge: Int = CoreStore.queryValue( - From(MyPersonEntity), - Select(.Maximum("age")) + From(), + Select(.maximum("age")) ) ``` Valid return types depend on the query: @@ -395,7 +394,6 @@ public extension Select where T: NSManagedObjectID { // MARK: - Select: Equatable -@warn_unused_result public func == (lhs: Select, rhs: Select) -> Bool { return lhs.selectTerms == rhs.selectTerms @@ -573,6 +571,38 @@ extension String: SelectValueResultType { } +// MARK: - Date: SelectValueResultType + +extension Date: SelectValueResultType { + + public static var attributeType: NSAttributeType { + + return .dateAttributeType + } + + public static func fromResultObject(_ result: AnyObject) -> Date? { + + return result as? Date + } +} + + +// MARK: - Data: SelectValueResultType + +extension Data: SelectValueResultType { + + public static var attributeType: NSAttributeType { + + return .binaryDataAttributeType + } + + public static func fromResultObject(_ result: AnyObject) -> Data? { + + return result as? Data + } +} + + // MARK: - NSNumber: SelectValueResultType extension NSNumber: SelectValueResultType { @@ -635,32 +665,40 @@ extension NSDecimalNumber { // MARK: - NSDate: SelectValueResultType -extension Date: SelectValueResultType { +extension NSDate: SelectValueResultType { public static var attributeType: NSAttributeType { return .dateAttributeType } - public static func fromResultObject(_ result: AnyObject) -> Date? { + public class func fromResultObject(_ result: AnyObject) -> Self? { - return result as? Date + func forceCast(_ object: AnyObject) -> T? { + + return (object as? T) + } + return forceCast(result) } } // MARK: - NSData: SelectValueResultType -extension Data: SelectValueResultType { +extension NSData: SelectValueResultType { public static var attributeType: NSAttributeType { return .binaryDataAttributeType } - public static func fromResultObject(_ result: AnyObject) -> Data? { + public class func fromResultObject(_ result: AnyObject) -> Self? { - return result as? Data + func forceCast(_ object: AnyObject) -> T? { + + return (object as? T) + } + return forceCast(result) } } diff --git a/Sources/Fetching and Querying/Concrete Clauses/Tweak.swift b/Sources/Fetching and Querying/Concrete Clauses/Tweak.swift index 7f208da..d1eb6b4 100644 --- a/Sources/Fetching and Querying/Concrete Clauses/Tweak.swift +++ b/Sources/Fetching and Querying/Concrete Clauses/Tweak.swift @@ -34,7 +34,7 @@ import CoreData Sample usage: ``` let employees = transaction.fetchAll( - From(MyPersonEntity), + From(), Tweak { (fetchRequest) -> Void in fetchRequest.includesPendingChanges = false fetchRequest.fetchLimit = 5 diff --git a/Sources/Fetching and Querying/Concrete Clauses/Where.swift b/Sources/Fetching and Querying/Concrete Clauses/Where.swift index ed330f3..7cf8022 100644 --- a/Sources/Fetching and Querying/Concrete Clauses/Where.swift +++ b/Sources/Fetching and Querying/Concrete Clauses/Where.swift @@ -27,17 +27,17 @@ import Foundation import CoreData -public func &&(left: Where, right: Where) -> Where { +public func && (left: Where, right: Where) -> Where { return Where(CompoundPredicate(type: .and, subpredicates: [left.predicate, right.predicate])) } -public func ||(left: Where, right: Where) -> Where { +public func || (left: Where, right: Where) -> Where { return Where(CompoundPredicate(type: .or, subpredicates: [left.predicate, right.predicate])) } -public prefix func !(clause: Where) -> Where { +public prefix func ! (clause: Where) -> Where { return Where(CompoundPredicate(type: .not, subpredicates: [clause.predicate])) } @@ -168,7 +168,6 @@ public struct Where: FetchClause, QueryClause, DeleteClause, Hashable { // MARK: - Where: Equatable -@warn_unused_result public func == (lhs: Where, rhs: Where) -> Bool { return lhs.predicate == rhs.predicate diff --git a/Sources/Fetching and Querying/CoreStore+Querying.swift b/Sources/Fetching and Querying/CoreStore+Querying.swift index 467a716..08c5727 100644 --- a/Sources/Fetching and Querying/CoreStore+Querying.swift +++ b/Sources/Fetching and Querying/CoreStore+Querying.swift @@ -37,7 +37,6 @@ public extension CoreStore { - parameter object: a reference to the object created/fetched outside the `DataStack` - returns: the `NSManagedObject` instance if the object exists in the `DataStack`, or `nil` if not found. */ - @warn_unused_result public static func fetchExisting(_ object: T) -> T? { return self.defaultStack.fetchExisting(object) @@ -49,7 +48,6 @@ public extension CoreStore { - parameter objectID: the `NSManagedObjectID` for the object - returns: the `NSManagedObject` instance if the object exists in the `DataStack`, or `nil` if not found. */ - @warn_unused_result public static func fetchExisting(_ objectID: NSManagedObjectID) -> T? { return self.defaultStack.fetchExisting(objectID) @@ -61,7 +59,6 @@ public extension CoreStore { - parameter objects: an array of `NSManagedObject`s created/fetched outside the `DataStack` - returns: the `NSManagedObject` array for objects that exists in the `DataStack` */ - @warn_unused_result public static func fetchExisting(_ objects: S) -> [T] { return self.defaultStack.fetchExisting(objects) @@ -73,7 +70,6 @@ public extension CoreStore { - parameter objectIDs: the `NSManagedObjectID` array for the objects - returns: the `NSManagedObject` array for objects that exists in the `DataStack` */ - @warn_unused_result public static func fetchExisting(_ objectIDs: S) -> [T] { return self.defaultStack.fetchExisting(objectIDs) @@ -86,7 +82,6 @@ public extension CoreStore { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: the first `NSManagedObject` instance that satisfies the specified `FetchClause`s */ - @warn_unused_result public static func fetchOne(_ from: From, _ fetchClauses: FetchClause...) -> T? { return self.defaultStack.fetchOne(from, fetchClauses) @@ -99,7 +94,6 @@ public extension CoreStore { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: the first `NSManagedObject` instance that satisfies the specified `FetchClause`s */ - @warn_unused_result public static func fetchOne(_ from: From, _ fetchClauses: [FetchClause]) -> T? { return self.defaultStack.fetchOne(from, fetchClauses) @@ -112,7 +106,6 @@ public extension CoreStore { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: all `NSManagedObject` instances that satisfy the specified `FetchClause`s */ - @warn_unused_result public static func fetchAll(_ from: From, _ fetchClauses: FetchClause...) -> [T]? { return self.defaultStack.fetchAll(from, fetchClauses) @@ -125,7 +118,6 @@ public extension CoreStore { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: all `NSManagedObject` instances that satisfy the specified `FetchClause`s */ - @warn_unused_result public static func fetchAll(_ from: From, _ fetchClauses: [FetchClause]) -> [T]? { return self.defaultStack.fetchAll(from, fetchClauses) @@ -138,7 +130,6 @@ public extension CoreStore { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: the number `NSManagedObject`s that satisfy the specified `FetchClause`s */ - @warn_unused_result public static func fetchCount(_ from: From, _ fetchClauses: FetchClause...) -> Int? { return self.defaultStack.fetchCount(from, fetchClauses) @@ -151,7 +142,6 @@ public extension CoreStore { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: the number `NSManagedObject`s that satisfy the specified `FetchClause`s */ - @warn_unused_result public static func fetchCount(_ from: From, _ fetchClauses: [FetchClause]) -> Int? { return self.defaultStack.fetchCount(from, fetchClauses) @@ -164,7 +154,6 @@ public extension CoreStore { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: the `NSManagedObjectID` for the first `NSManagedObject` that satisfies the specified `FetchClause`s */ - @warn_unused_result public static func fetchObjectID(_ from: From, _ fetchClauses: FetchClause...) -> NSManagedObjectID? { return self.defaultStack.fetchObjectID(from, fetchClauses) @@ -177,7 +166,6 @@ public extension CoreStore { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: the `NSManagedObjectID` for the first `NSManagedObject` that satisfies the specified `FetchClause`s */ - @warn_unused_result public static func fetchObjectID(_ from: From, _ fetchClauses: [FetchClause]) -> NSManagedObjectID? { return self.defaultStack.fetchObjectID(from, fetchClauses) @@ -190,7 +178,6 @@ public extension CoreStore { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: the `NSManagedObjectID` for all `NSManagedObject`s that satisfy the specified `FetchClause`s */ - @warn_unused_result public static func fetchObjectIDs(_ from: From, _ fetchClauses: FetchClause...) -> [NSManagedObjectID]? { return self.defaultStack.fetchObjectIDs(from, fetchClauses) @@ -203,7 +190,6 @@ public extension CoreStore { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: the `NSManagedObjectID` for all `NSManagedObject`s that satisfy the specified `FetchClause`s */ - @warn_unused_result public static func fetchObjectIDs(_ from: From, _ fetchClauses: [FetchClause]) -> [NSManagedObjectID]? { return self.defaultStack.fetchObjectIDs(from, fetchClauses) @@ -219,7 +205,6 @@ public extension CoreStore { - parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - returns: the result of the the query. The type of the return value is specified by the generic type of the `Select` parameter. */ - @warn_unused_result public static func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: QueryClause...) -> U? { return self.defaultStack.queryValue(from, selectClause, queryClauses) @@ -235,7 +220,6 @@ public extension CoreStore { - parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - returns: the result of the the query. The type of the return value is specified by the generic type of the `Select` parameter. */ - @warn_unused_result public static func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: [QueryClause]) -> U? { return self.defaultStack.queryValue(from, selectClause, queryClauses) @@ -251,7 +235,6 @@ public extension CoreStore { - parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - returns: the result of the the query. The type of the return value is specified by the generic type of the `Select` parameter. */ - @warn_unused_result public static func queryAttributes(_ from: From, _ selectClause: Select, _ queryClauses: QueryClause...) -> [[NSString: AnyObject]]? { return self.defaultStack.queryAttributes(from, selectClause, queryClauses) @@ -267,7 +250,6 @@ public extension CoreStore { - parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - returns: the result of the the query. The type of the return value is specified by the generic type of the `Select` parameter. */ - @warn_unused_result public static func queryAttributes(_ from: From, _ selectClause: Select, _ queryClauses: [QueryClause]) -> [[NSString: AnyObject]]? { return self.defaultStack.queryAttributes(from, selectClause, queryClauses) diff --git a/Sources/Fetching and Querying/DataStack+Querying.swift b/Sources/Fetching and Querying/DataStack+Querying.swift index f134ea8..5d8232b 100644 --- a/Sources/Fetching and Querying/DataStack+Querying.swift +++ b/Sources/Fetching and Querying/DataStack+Querying.swift @@ -40,7 +40,6 @@ public extension DataStack { - parameter object: a reference to the object created/fetched outside the `DataStack` - returns: the `NSManagedObject` instance if the object exists in the `DataStack`, or `nil` if not found. */ - @warn_unused_result public func fetchExisting(_ object: T) -> T? { do { @@ -59,7 +58,6 @@ public extension DataStack { - parameter objectID: the `NSManagedObjectID` for the object - returns: the `NSManagedObject` instance if the object exists in the `DataStack`, or `nil` if not found. */ - @warn_unused_result public func fetchExisting(_ objectID: NSManagedObjectID) -> T? { do { @@ -78,7 +76,6 @@ public extension DataStack { - parameter objects: an array of `NSManagedObject`s created/fetched outside the `DataStack` - returns: the `NSManagedObject` array for objects that exists in the `DataStack` */ - @warn_unused_result public func fetchExisting(_ objects: S) -> [T] { return objects.flatMap { (try? self.mainContext.existingObject(with: $0.objectID)) as? T } @@ -90,7 +87,6 @@ public extension DataStack { - parameter objectIDs: the `NSManagedObjectID` array for the objects - returns: the `NSManagedObject` array for objects that exists in the `DataStack` */ - @warn_unused_result public func fetchExisting(_ objectIDs: S) -> [T] { return objectIDs.flatMap { (try? self.mainContext.existingObject(with: $0)) as? T } @@ -103,7 +99,6 @@ public extension DataStack { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: the first `NSManagedObject` instance that satisfies the specified `FetchClause`s */ - @warn_unused_result public func fetchOne(_ from: From, _ fetchClauses: FetchClause...) -> T? { CoreStore.assert( @@ -120,7 +115,6 @@ public extension DataStack { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: the first `NSManagedObject` instance that satisfies the specified `FetchClause`s */ - @warn_unused_result public func fetchOne(_ from: From, _ fetchClauses: [FetchClause]) -> T? { CoreStore.assert( @@ -137,7 +131,6 @@ public extension DataStack { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: all `NSManagedObject` instances that satisfy the specified `FetchClause`s */ - @warn_unused_result public func fetchAll(_ from: From, _ fetchClauses: FetchClause...) -> [T]? { CoreStore.assert( @@ -154,7 +147,6 @@ public extension DataStack { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: all `NSManagedObject` instances that satisfy the specified `FetchClause`s */ - @warn_unused_result public func fetchAll(_ from: From, _ fetchClauses: [FetchClause]) -> [T]? { CoreStore.assert( @@ -171,7 +163,6 @@ public extension DataStack { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: the number `NSManagedObject`s that satisfy the specified `FetchClause`s */ - @warn_unused_result public func fetchCount(_ from: From, _ fetchClauses: FetchClause...) -> Int? { CoreStore.assert( @@ -188,7 +179,6 @@ public extension DataStack { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: the number `NSManagedObject`s that satisfy the specified `FetchClause`s */ - @warn_unused_result public func fetchCount(_ from: From, _ fetchClauses: [FetchClause]) -> Int? { CoreStore.assert( @@ -205,7 +195,6 @@ public extension DataStack { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: the `NSManagedObjectID` for the first `NSManagedObject` that satisfies the specified `FetchClause`s */ - @warn_unused_result public func fetchObjectID(_ from: From, _ fetchClauses: FetchClause...) -> NSManagedObjectID? { CoreStore.assert( @@ -222,7 +211,6 @@ public extension DataStack { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: the `NSManagedObjectID` for the first `NSManagedObject` that satisfies the specified `FetchClause`s */ - @warn_unused_result public func fetchObjectID(_ from: From, _ fetchClauses: [FetchClause]) -> NSManagedObjectID? { CoreStore.assert( @@ -239,7 +227,6 @@ public extension DataStack { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: the `NSManagedObjectID` for all `NSManagedObject`s that satisfy the specified `FetchClause`s */ - @warn_unused_result public func fetchObjectIDs(_ from: From, _ fetchClauses: FetchClause...) -> [NSManagedObjectID]? { CoreStore.assert( @@ -256,7 +243,6 @@ public extension DataStack { - parameter fetchClauses: a series of `FetchClause` instances for the fetch request. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: the `NSManagedObjectID` for all `NSManagedObject`s that satisfy the specified `FetchClause`s */ - @warn_unused_result public func fetchObjectIDs(_ from: From, _ fetchClauses: [FetchClause]) -> [NSManagedObjectID]? { CoreStore.assert( @@ -276,7 +262,6 @@ public extension DataStack { - parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - returns: the result of the the query. The type of the return value is specified by the generic type of the `Select` parameter. */ - @warn_unused_result public func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: QueryClause...) -> U? { CoreStore.assert( @@ -296,7 +281,6 @@ public extension DataStack { - parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - returns: the result of the the query. The type of the return value is specified by the generic type of the `Select` parameter. */ - @warn_unused_result public func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: [QueryClause]) -> U? { CoreStore.assert( @@ -316,7 +300,6 @@ public extension DataStack { - parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - returns: the result of the the query. The type of the return value is specified by the generic type of the `Select` parameter. */ - @warn_unused_result public func queryAttributes(_ from: From, _ selectClause: Select, _ queryClauses: QueryClause...) -> [[NSString: AnyObject]]? { CoreStore.assert( @@ -336,7 +319,6 @@ public extension DataStack { - parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - returns: the result of the the query. The type of the return value is specified by the generic type of the `Select` parameter. */ - @warn_unused_result public func queryAttributes(_ from: From, _ selectClause: Select, _ queryClauses: [QueryClause]) -> [[NSString: AnyObject]]? { CoreStore.assert( diff --git a/Sources/Importing/BaseDataTransaction+Importing.swift b/Sources/Importing/BaseDataTransaction+Importing.swift index 1d74055..3abca84 100644 --- a/Sources/Importing/BaseDataTransaction+Importing.swift +++ b/Sources/Importing/BaseDataTransaction+Importing.swift @@ -47,8 +47,8 @@ public extension BaseDataTransaction { self.isRunningInAllowedQueue(), "Attempted to import an object of type \(cs_typeName(into.entityClass)) outside the transaction's designated queue." ) - - return try cs_autoreleasepool { + + return try autoreleasepool { guard T.shouldInsertFromImportSource(source, inTransaction: self) else { @@ -77,7 +77,7 @@ public extension BaseDataTransaction { "Attempted to import an object of type \(cs_typeName(object)) outside the transaction's designated queue." ) - try cs_autoreleasepool { + try autoreleasepool { guard T.shouldInsertFromImportSource(source, inTransaction: self) else { @@ -105,7 +105,7 @@ public extension BaseDataTransaction { "Attempted to import an object of type \(cs_typeName(into.entityClass)) outside the transaction's designated queue." ) - return try cs_autoreleasepool { + return try autoreleasepool { return try sourceArray.flatMap { (source) -> T? in @@ -114,7 +114,7 @@ public extension BaseDataTransaction { return nil } - return try cs_autoreleasepool { + return try autoreleasepool { let object = self.create(into) try object.didInsertFromImportSource(source, inTransaction: self) @@ -141,7 +141,7 @@ public extension BaseDataTransaction { "Attempted to import an object of type \(cs_typeName(into.entityClass)) outside the transaction's designated queue." ) - return try cs_autoreleasepool { + return try autoreleasepool { let uniqueIDKeyPath = T.uniqueIDKeyPath guard let uniqueIDValue = try T.uniqueIDFromImportSource(source, inTransaction: self) else { @@ -149,7 +149,7 @@ public extension BaseDataTransaction { return nil } - if let object = self.fetchOne(From(T), Where(uniqueIDKeyPath, isEqualTo: uniqueIDValue)) { + if let object = self.fetchOne(From(), Where(uniqueIDKeyPath, isEqualTo: uniqueIDValue)) { guard T.shouldUpdateFromImportSource(source, inTransaction: self) else { @@ -187,17 +187,17 @@ public extension BaseDataTransaction { public func importUniqueObjects( _ into: Into, sourceArray: S, - @noescape preProcess: (mapping: [T.UniqueIDType: T.ImportSource]) throws -> [T.UniqueIDType: T.ImportSource] = { $0 }) throws -> [T] { + preProcess: @noescape (mapping: [T.UniqueIDType: T.ImportSource]) throws -> [T.UniqueIDType: T.ImportSource] = { $0 }) throws -> [T] { CoreStore.assert( self.isRunningInAllowedQueue(), "Attempted to import an object of type \(cs_typeName(into.entityClass)) outside the transaction's designated queue." ) - return try cs_autoreleasepool { + return try autoreleasepool { var mapping = Dictionary() - let sortedIDs = try cs_autoreleasepool { + let sortedIDs = try autoreleasepool { return try sourceArray.flatMap { (source) -> T.UniqueIDType? in @@ -211,12 +211,12 @@ public extension BaseDataTransaction { } } - mapping = try cs_autoreleasepool { try preProcess(mapping: mapping) } + mapping = try autoreleasepool { try preProcess(mapping: mapping) } var objects = Dictionary() - for object in self.fetchAll(From(T), Where(T.uniqueIDKeyPath, isMemberOf: sortedIDs)) ?? [] { + for object in self.fetchAll(From(), Where(T.uniqueIDKeyPath, isMemberOf: sortedIDs)) ?? [] { - try cs_autoreleasepool { + try autoreleasepool { let uniqueIDValue = object.uniqueIDValue @@ -233,7 +233,7 @@ public extension BaseDataTransaction { for (uniqueIDValue, source) in mapping { - try cs_autoreleasepool { + try autoreleasepool { guard T.shouldInsertFromImportSource(source, inTransaction: self) else { diff --git a/Sources/Importing/ImportableObject.swift b/Sources/Importing/ImportableObject.swift index 394a4cc..53bf2c8 100644 --- a/Sources/Importing/ImportableObject.swift +++ b/Sources/Importing/ImportableObject.swift @@ -40,7 +40,7 @@ import CoreData CoreStore.beginAsynchronous { (transaction) -> Void in let json: NSDictionary = // ... let person = try! transaction.importObject( - Into(MyPersonEntity), + Into(), source: json ) // ... diff --git a/Sources/Importing/ImportableUniqueObject.swift b/Sources/Importing/ImportableUniqueObject.swift index 226394e..9f47677 100644 --- a/Sources/Importing/ImportableUniqueObject.swift +++ b/Sources/Importing/ImportableUniqueObject.swift @@ -41,7 +41,7 @@ import CoreData CoreStore.beginAsynchronous { (transaction) -> Void in let json: NSDictionary = // ... let person = try! transaction.importUniqueObject( - Into(MyPersonEntity), + Into(), source: json ) // ... diff --git a/Sources/Internal/CoreStoreFetchedResultsController.swift b/Sources/Internal/CoreStoreFetchedResultsController.swift index 2a189bd..bfbccc7 100644 --- a/Sources/Internal/CoreStoreFetchedResultsController.swift +++ b/Sources/Internal/CoreStoreFetchedResultsController.swift @@ -55,7 +55,7 @@ internal final class CoreStoreFetchedResultsController: NSFetchedResultsControll context: context, applyAffectedStores: false ) - applyFetchClauses(fetchRequest: fetchRequest.cs_dynamicCast()) + applyFetchClauses(fetchRequest: unsafeBitCast(fetchRequest, to: NSFetchRequest.self)) if let from = from { diff --git a/Sources/Internal/FetchedResultsControllerDelegate.swift b/Sources/Internal/FetchedResultsControllerDelegate.swift index 2c7f35a..7e7fd95 100644 --- a/Sources/Internal/FetchedResultsControllerDelegate.swift +++ b/Sources/Internal/FetchedResultsControllerDelegate.swift @@ -47,7 +47,7 @@ internal protocol FetchedResultsControllerHandler: class { // MARK: - FetchedResultsControllerDelegate - internal final class FetchedResultsControllerDelegate: NSObject, NSFetchedResultsControllerDelegate { +internal final class FetchedResultsControllerDelegate: NSObject, NSFetchedResultsControllerDelegate { // MARK: Internal diff --git a/Sources/Internal/Functions.swift b/Sources/Internal/Functions.swift index 33152a4..e54d435 100644 --- a/Sources/Internal/Functions.swift +++ b/Sources/Internal/Functions.swift @@ -25,68 +25,7 @@ import Foundation - -// MARK: - Custom AutoreleasePool - -internal func cs_autoreleasepool(@noescape _ closure: () -> Void) { - - autoreleasepool(closure) -} - -internal func cs_autoreleasepool(@noescape _ closure: () -> T) -> T { - - var closureValue: T! - autoreleasepool { - - closureValue = closure() - } - - return closureValue -} - -internal func cs_autoreleasepool(@noescape _ closure: () throws -> T) throws -> T { - - var closureValue: T! - var closureError: ErrorProtocol? - autoreleasepool { - - do { - - closureValue = try closure() - } - catch { - - closureError = error - } - } - - if let closureError = closureError { - - throw closureError - } - return closureValue -} - -internal func cs_autoreleasepool(@noescape _ closure: () throws -> Void) throws { - - var closureError: ErrorProtocol? - autoreleasepool { - - do { - - try closure() - } - catch { - - closureError = error - } - } - - if let closureError = closureError { - - throw closureError - } -} +// MARK: Associated Objects internal func cs_getAssociatedObjectForKey(_ key: UnsafePointer, inObject object: AnyObject) -> T? { diff --git a/Sources/Internal/MigrationManager.swift b/Sources/Internal/MigrationManager.swift index 66370b2..de4ed7f 100644 --- a/Sources/Internal/MigrationManager.swift +++ b/Sources/Internal/MigrationManager.swift @@ -56,7 +56,7 @@ internal final class MigrationManager: NSMigrationManager, ProgressReporting { } - // MARK: NSProgressReporting + // MARK: ProgressReporting let progress: Progress } diff --git a/Sources/Internal/NSFetchRequest+CoreStore.swift b/Sources/Internal/NSFetchRequest+CoreStore.swift deleted file mode 100644 index c7d478c..0000000 --- a/Sources/Internal/NSFetchRequest+CoreStore.swift +++ /dev/null @@ -1,20 +0,0 @@ -// -// NSFetchRequest+CoreStore.swift -// CoreStore -// -// Created by John Rommel Estropia on 2016/07/20. -// Copyright © 2016 John Rommel Estropia. All rights reserved. -// - -import CoreData - -internal extension NSFetchRequest { - - // MARK: Internal - - @nonobjc - internal func cs_dynamicCast() -> NSFetchRequest { - - return unsafeBitCast(self, to: NSFetchRequest.self) - } -} diff --git a/Sources/Internal/NSManagedObjectContext+CoreStore.swift b/Sources/Internal/NSManagedObjectContext+CoreStore.swift index 1cfd61a..e704ba9 100644 --- a/Sources/Internal/NSManagedObjectContext+CoreStore.swift +++ b/Sources/Internal/NSManagedObjectContext+CoreStore.swift @@ -78,20 +78,10 @@ internal extension NSManagedObjectContext { @nonobjc internal func setupForCoreStoreWithContextName(_ contextName: String) { - - #if USE_FRAMEWORKS - - self.name = contextName - #else - - if #available(iOS 8.0, *) { - - self.name = contextName - } - #endif + self.name = contextName self.observerForWillSaveNotification = NotificationObserver( - notificationName: NSNotification.Name.NSManagedObjectContextWillSave.rawValue, + notificationName: NSNotification.Name.NSManagedObjectContextWillSave, object: self, closure: { (note) -> Void in diff --git a/Sources/Internal/NSManagedObjectContext+Querying.swift b/Sources/Internal/NSManagedObjectContext+Querying.swift index 9e64ff4..6dcb2cc 100644 --- a/Sources/Internal/NSManagedObjectContext+Querying.swift +++ b/Sources/Internal/NSManagedObjectContext+Querying.swift @@ -199,7 +199,7 @@ internal extension NSManagedObjectContext { } @nonobjc - internal func fetchCount(_ fetchRequest: NSFetchRequest) -> Int? { + internal func fetchCount(_ fetchRequest: NSFetchRequest) -> Int? { var count = 0 var countError: ErrorProtocol? @@ -366,7 +366,7 @@ internal extension NSManagedObjectContext { var fetchError: ErrorProtocol? self.performAndWait { - cs_autoreleasepool { + autoreleasepool { do { diff --git a/Sources/Internal/NSManagedObjectContext+Setup.swift b/Sources/Internal/NSManagedObjectContext+Setup.swift index b9076be..8848226 100644 --- a/Sources/Internal/NSManagedObjectContext+Setup.swift +++ b/Sources/Internal/NSManagedObjectContext+Setup.swift @@ -72,16 +72,18 @@ internal extension NSManagedObjectContext { #if os(iOS) || os(OSX) context.observerForDidImportUbiquitousContentChangesNotification = NotificationObserver( - notificationName: NSNotification.Name.NSPersistentStoreDidImportUbiquitousContentChanges.rawValue, + notificationName: NSNotification.Name.NSPersistentStoreDidImportUbiquitousContentChanges, object: coordinator, closure: { [weak context] (note) -> Void in context?.perform { () -> Void in - let updatedObjectIDs = ((note as NSNotification).userInfo?[NSUpdatedObjectsKey] as? Set) ?? [] - for objectID in updatedObjectIDs { + if let updatedObjectIDs = (note.userInfo?[NSUpdatedObjectsKey] as? Set) { - context?.object(with: objectID).willAccessValue(forKey: nil) + for objectID in updatedObjectIDs { + + context?.object(with: objectID).willAccessValue(forKey: nil) + } } context?.mergeChanges(fromContextDidSave: note) } @@ -102,7 +104,7 @@ internal extension NSManagedObjectContext { context.undoManager = nil context.setupForCoreStoreWithContextName("com.corestore.maincontext") context.observerForDidSaveNotification = NotificationObserver( - notificationName: NSNotification.Name.NSManagedObjectContextDidSave.rawValue, + notificationName: NSNotification.Name.NSManagedObjectContextDidSave, object: rootContext, closure: { [weak context] (note) -> Void in @@ -113,10 +115,12 @@ internal extension NSManagedObjectContext { } let mergeChanges = { () -> Void in - let updatedObjects = ((note as NSNotification).userInfo?[NSUpdatedObjectsKey] as? Set) ?? [] - for object in updatedObjects { + if let updatedObjects = (note.userInfo?[NSUpdatedObjectsKey] as? Set) { - context.object(with: object.objectID).willAccessValue(forKey: nil) + for object in updatedObjects { + + context.object(with: object.objectID).willAccessValue(forKey: nil) + } } context.mergeChanges(fromContextDidSave: note) } diff --git a/Sources/Internal/NSManagedObjectModel+Setup.swift b/Sources/Internal/NSManagedObjectModel+Setup.swift index 58c32a4..39771d1 100644 --- a/Sources/Internal/NSManagedObjectModel+Setup.swift +++ b/Sources/Internal/NSManagedObjectModel+Setup.swift @@ -47,7 +47,7 @@ internal extension NSManagedObjectModel { guard let versionInfo = NSDictionary(contentsOf: versionInfoPlistURL), let versionHashes = versionInfo["NSManagedObjectModel_VersionHashes"] as? [String: AnyObject] else { - CoreStore.abort("Could not load \(cs_typeName(NSManagedObjectModel)) metadata from path \"\(versionInfoPlistURL)\".") + CoreStore.abort("Could not load \(cs_typeName(NSManagedObjectModel.self)) metadata from path \"\(versionInfoPlistURL)\".") } let modelVersions = Set(versionHashes.keys) @@ -106,7 +106,7 @@ internal extension NSManagedObjectModel { return rootModel } - CoreStore.abort("Could not create an \(cs_typeName(NSManagedObjectModel)) from the model at URL \"\(modelFileURL)\".") + CoreStore.abort("Could not create an \(cs_typeName(NSManagedObjectModel.self)) from the model at URL \"\(modelFileURL)\".") } @nonobjc diff --git a/Sources/Internal/NotificationObserver.swift b/Sources/Internal/NotificationObserver.swift index fccc9c9..1f57d49 100644 --- a/Sources/Internal/NotificationObserver.swift +++ b/Sources/Internal/NotificationObserver.swift @@ -32,16 +32,16 @@ internal final class NotificationObserver { // MARK: Public - let notificationName: String + let notificationName: Notification.Name let object: AnyObject? let observer: NSObjectProtocol - init(notificationName: String, object: AnyObject?, queue: OperationQueue? = nil, closure: (note: Notification) -> Void) { + init(notificationName: Notification.Name, object: AnyObject?, queue: OperationQueue? = nil, closure: (note: Notification) -> Void) { self.notificationName = notificationName self.object = object self.observer = NotificationCenter.default.addObserver( - forName: NSNotification.Name(rawValue: notificationName), + forName: notificationName, object: object, queue: queue, using: closure @@ -52,7 +52,7 @@ internal final class NotificationObserver { NotificationCenter.default.removeObserver( self.observer, - name: NSNotification.Name(rawValue: self.notificationName), + name: self.notificationName, object: self.object ) } diff --git a/Sources/Logging/CoreStore+CustomDebugStringConvertible.swift b/Sources/Logging/CoreStore+CustomDebugStringConvertible.swift index fbf488e..215b215 100644 --- a/Sources/Logging/CoreStore+CustomDebugStringConvertible.swift +++ b/Sources/Logging/CoreStore+CustomDebugStringConvertible.swift @@ -710,7 +710,7 @@ extension SelectTerm: CustomDebugStringConvertible, CoreStoreDebugStringConverti case ._attribute(let keyPath): return createFormattedString( - ".Attribute (", ")", + ".attribute (", ")", ("keyPath", keyPath) ) diff --git a/Sources/Logging/CoreStoreLogger.swift b/Sources/Logging/CoreStoreLogger.swift index db66489..eb6c62b 100644 --- a/Sources/Logging/CoreStoreLogger.swift +++ b/Sources/Logging/CoreStoreLogger.swift @@ -43,7 +43,7 @@ public enum LogLevel { // MARK: - CoreStoreLogger /** - Custom loggers should implement the `CoreStoreLogger` protocol and pass its instance to `CoreStore.logger`. Calls to `log(...)`, `handleError(...)`, and `assert(...)` are not tied to a specific queue/thread, so it is the implementer's job to handle thread-safety. + Custom loggers should implement the `CoreStoreLogger` protocol and pass its instance to `CoreStore.logger`. Calls to `log(...)`, `assert(...)`, and `abort(...)` are not tied to a specific queue/thread, so it is the implementer's job to handle thread-safety. */ public protocol CoreStoreLogger { diff --git a/Sources/Logging/DefaultLogger.swift b/Sources/Logging/DefaultLogger.swift index d3862d3..d8513bf 100644 --- a/Sources/Logging/DefaultLogger.swift +++ b/Sources/Logging/DefaultLogger.swift @@ -30,10 +30,6 @@ import Foundation /** The `DefaultLogger` is a basic implementation of the `CoreStoreLogger` protocol. - - - The `log(...)` method calls `print(...)` to print the level, source file name, line number, function name, and the log message. - - The `handleError(...)` method calls `print(...)` to print the source file name, line number, function name, and the error message. - - The `assert(...)` method calls `assert(...)` on the arguments. */ public final class DefaultLogger: CoreStoreLogger { diff --git a/Sources/Migrating/CoreStore+Migration.swift b/Sources/Migrating/CoreStore+Migration.swift index 26453d0..83e3159 100644 --- a/Sources/Migrating/CoreStore+Migration.swift +++ b/Sources/Migrating/CoreStore+Migration.swift @@ -41,15 +41,15 @@ public extension CoreStore { InMemoryStore.self, completion: { result in switch result { - case .Success(let storage): // ... - case .Failure(let error): // ... + case .success(let storage): // ... + case .failure(let error): // ... } } ) ``` - parameter storeType: the storage type - - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `SetupResult` argument indicates the result. Note that the `StorageInterface` associated to the `SetupResult.Success` may not always be the same instance as the parameter argument if a previous `StorageInterface` was already added at the same URL and with the same configuration. + - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `SetupResult` argument indicates the result. Note that the `StorageInterface` associated to the `SetupResult.success` may not always be the same instance as the parameter argument if a previous `StorageInterface` was already added at the same URL and with the same configuration. */ public static func addStorage(_ storeType: T.Type, completion: (SetupResult) -> Void) { @@ -63,15 +63,15 @@ public extension CoreStore { InMemoryStore(configuration: "Config1"), completion: { result in switch result { - case .Success(let storage): // ... - case .Failure(let error): // ... + case .success(let storage): // ... + case .failure(let error): // ... } } ) ``` - parameter storage: the storage - - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `SetupResult` argument indicates the result. Note that the `StorageInterface` associated to the `SetupResult.Success` may not always be the same instance as the parameter argument if a previous `StorageInterface` was already added at the same URL and with the same configuration. + - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `SetupResult` argument indicates the result. Note that the `StorageInterface` associated to the `SetupResult.success` may not always be the same instance as the parameter argument if a previous `StorageInterface` was already added at the same URL and with the same configuration. */ public static func addStorage(_ storage: T, completion: (SetupResult) -> Void) { @@ -85,15 +85,15 @@ public extension CoreStore { SQLiteStore.self, completion: { result in switch result { - case .Success(let storage): // ... - case .Failure(let error): // ... + case .success(let storage): // ... + case .failure(let error): // ... } } ) ``` - parameter storeType: the local storage type - - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `SetupResult` argument indicates the result. Note that the `LocalStorage` associated to the `SetupResult.Success` may not always be the same instance as the parameter argument if a previous `LocalStorage` was already added at the same URL and with the same configuration. + - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `SetupResult` argument indicates the result. Note that the `LocalStorage` associated to the `SetupResult.success` may not always be the same instance as the parameter argument if a previous `LocalStorage` was already added at the same URL and with the same configuration. - returns: an `NSProgress` instance if a migration has started, or `nil` if either no migrations are required or if a failure occured. */ public static func addStorage(_ storeType: T.Type, completion: (SetupResult) -> Void) -> Progress? { @@ -108,15 +108,15 @@ public extension CoreStore { SQLiteStore(fileName: "core_data.sqlite", configuration: "Config1"), completion: { result in switch result { - case .Success(let storage): // ... - case .Failure(let error): // ... + case .success(let storage): // ... + case .failure(let error): // ... } } ) ``` - parameter storage: the local storage - - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `SetupResult` argument indicates the result. Note that the `LocalStorage` associated to the `SetupResult.Success` may not always be the same instance as the parameter argument if a previous `LocalStorage` was already added at the same URL and with the same configuration. + - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `SetupResult` argument indicates the result. Note that the `LocalStorage` associated to the `SetupResult.success` may not always be the same instance as the parameter argument if a previous `LocalStorage` was already added at the same URL and with the same configuration. - returns: an `NSProgress` instance if a migration has started, or `nil` if either no migrations are required or if a failure occured. */ public static func addStorage(_ storage: T, completion: (SetupResult) -> Void) -> Progress? { @@ -142,15 +142,15 @@ public extension CoreStore { storage, completion: { result in switch result { - case .Success(let storage): // ... - case .Failure(let error): // ... + case .success(let storage): // ... + case .failure(let error): // ... } } ) ``` - parameter storage: the cloud storage - - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `SetupResult` argument indicates the result. Note that the `CloudStorage` associated to the `SetupResult.Success` may not always be the same instance as the parameter argument if a previous `CloudStorage` was already added at the same URL and with the same configuration. + - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `SetupResult` argument indicates the result. Note that the `CloudStorage` associated to the `SetupResult.success` may not always be the same instance as the parameter argument if a previous `CloudStorage` was already added at the same URL and with the same configuration. */ public static func addStorage(_ storage: T, completion: (SetupResult) -> Void) { @@ -161,7 +161,7 @@ public extension CoreStore { Migrates a local storage to match the `defaultStack`'s managed object model version. This method does NOT add the migrated store to the data stack. - parameter storage: the local storage - - parameter completion: the closure to be executed on the main queue when the migration completes, either due to success or failure. The closure's `MigrationResult` argument indicates the result. This closure is NOT executed if an error is thrown, but will be executed with a `.Failure` result if an error occurs asynchronously. + - parameter completion: the closure to be executed on the main queue when the migration completes, either due to success or failure. The closure's `MigrationResult` argument indicates the result. This closure is NOT executed if an error is thrown, but will be executed with a `.failure` result if an error occurs asynchronously. - throws: a `CoreStoreError` value indicating the failure - returns: an `NSProgress` instance if a migration has started, or `nil` is no migrations are required */ @@ -177,7 +177,6 @@ public extension CoreStore { - throws: a `CoreStoreError` value indicating the failure - returns: a `MigrationType` array indicating the migration steps required for the store, or an empty array if the file does not exist yet. Otherwise, an error is thrown if either inspection of the store failed, or if no mapping model was found/inferred. */ - @warn_unused_result public static func requiredMigrationsForStorage(_ storage: T) throws -> [MigrationType] { return try self.defaultStack.requiredMigrationsForStorage(storage) diff --git a/Sources/Migrating/DataStack+Migration.swift b/Sources/Migrating/DataStack+Migration.swift index 3465384..68cd8c3 100644 --- a/Sources/Migrating/DataStack+Migration.swift +++ b/Sources/Migrating/DataStack+Migration.swift @@ -41,15 +41,15 @@ public extension DataStack { InMemoryStore.self, completion: { result in switch result { - case .Success(let storage): // ... - case .Failure(let error): // ... + case .success(let storage): // ... + case .failure(let error): // ... } } ) ``` - parameter storeType: the storage type - - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `SetupResult` argument indicates the result. Note that the `StorageInterface` associated to the `SetupResult.Success` may not always be the same instance as the parameter argument if a previous `StorageInterface` was already added at the same URL and with the same configuration. + - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `SetupResult` argument indicates the result. Note that the `StorageInterface` associated to the `SetupResult.success` may not always be the same instance as the parameter argument if a previous `StorageInterface` was already added at the same URL and with the same configuration. */ public func addStorage(_ storeType: T.Type, completion: (SetupResult) -> Void) { @@ -63,15 +63,15 @@ public extension DataStack { InMemoryStore(configuration: "Config1"), completion: { result in switch result { - case .Success(let storage): // ... - case .Failure(let error): // ... + case .success(let storage): // ... + case .failure(let error): // ... } } ) ``` - parameter storage: the storage - - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `SetupResult` argument indicates the result. Note that the `StorageInterface` associated to the `SetupResult.Success` may not always be the same instance as the parameter argument if a previous `StorageInterface` was already added at the same URL and with the same configuration. + - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `SetupResult` argument indicates the result. Note that the `StorageInterface` associated to the `SetupResult.success` may not always be the same instance as the parameter argument if a previous `StorageInterface` was already added at the same URL and with the same configuration. */ public func addStorage(_ storage: T, completion: (SetupResult) -> Void) { @@ -88,7 +88,7 @@ public extension DataStack { do { - try self.createPersistentStoreFromStorage( + _ = try self.createPersistentStoreFromStorage( storage, finalURL: nil, finalStoreOptions: storage.storeOptions @@ -121,15 +121,15 @@ public extension DataStack { SQLiteStore.self, completion: { result in switch result { - case .Success(let storage): // ... - case .Failure(let error): // ... + case .success(let storage): // ... + case .failure(let error): // ... } } ) ``` - parameter storeType: the local storage type - - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `SetupResult` argument indicates the result. Note that the `LocalStorage` associated to the `SetupResult.Success` may not always be the same instance as the parameter argument if a previous `LocalStorage` was already added at the same URL and with the same configuration. + - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `SetupResult` argument indicates the result. Note that the `LocalStorage` associated to the `SetupResult.success` may not always be the same instance as the parameter argument if a previous `LocalStorage` was already added at the same URL and with the same configuration. - returns: an `NSProgress` instance if a migration has started, or `nil` if either no migrations are required or if a failure occured. */ public func addStorage(_ storeType: T.Type, completion: (SetupResult) -> Void) -> Progress? { @@ -144,15 +144,15 @@ public extension DataStack { SQLiteStore(fileName: "core_data.sqlite", configuration: "Config1"), completion: { result in switch result { - case .Success(let storage): // ... - case .Failure(let error): // ... + case .success(let storage): // ... + case .failure(let error): // ... } } ) ``` - parameter storage: the local storage - - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `SetupResult` argument indicates the result. Note that the `LocalStorage` associated to the `SetupResult.Success` may not always be the same instance as the parameter argument if a previous `LocalStorage` was already added at the same URL and with the same configuration. + - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `SetupResult` argument indicates the result. Note that the `LocalStorage` associated to the `SetupResult.success` may not always be the same instance as the parameter argument if a previous `LocalStorage` was already added at the same URL and with the same configuration. - returns: an `NSProgress` instance if a migration has started, or `nil` if either no migrations are required or if a failure occured. */ public func addStorage(_ storage: T, completion: (SetupResult) -> Void) -> Progress? { @@ -310,15 +310,15 @@ public extension DataStack { storage, completion: { result in switch result { - case .Success(let storage): // ... - case .Failure(let error): // ... + case .success(let storage): // ... + case .failure(let error): // ... } } ) ``` - parameter storage: the cloud storage - - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `SetupResult` argument indicates the result. Note that the `CloudStorage` associated to the `SetupResult.Success` may not always be the same instance as the parameter argument if a previous `CloudStorage` was already added at the same URL and with the same configuration. + - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `SetupResult` argument indicates the result. Note that the `CloudStorage` associated to the `SetupResult.success` may not always be the same instance as the parameter argument if a previous `CloudStorage` was already added at the same URL and with the same configuration. */ public func addStorage(_ storage: T, completion: (SetupResult) -> Void) { @@ -421,7 +421,7 @@ public extension DataStack { let storeError = CoreStoreError(error) CoreStore.log( storeError, - "Failed to load \(cs_typeName(NSPersistentStore)) metadata." + "Failed to load \(cs_typeName(NSPersistentStore.self)) metadata." ) GCDQueue.main.async { @@ -481,7 +481,6 @@ public extension DataStack { - throws: a `CoreStoreError` value indicating the failure - returns: a `MigrationType` array indicating the migration steps required for the store, or an empty array if the file does not exist yet. Otherwise, an error is thrown if either inspection of the store failed, or if no mapping model was found/inferred. */ - @warn_unused_result public func requiredMigrationsForStorage(_ storage: T) throws -> [MigrationType] { return try self.coordinator.performSynchronously { @@ -614,7 +613,7 @@ public extension DataStack { return } - cs_autoreleasepool { + autoreleasepool { do { @@ -644,16 +643,7 @@ public extension DataStack { } let migrationOperation = BlockOperation() - #if USE_FRAMEWORKS - - migrationOperation.qualityOfService = .utility - #else - - if #available(iOS 8.0, *) { - - migrationOperation.qualityOfService = .utility - } - #endif + migrationOperation.qualityOfService = .utility operations.forEach { migrationOperation.addDependency($0) } migrationOperation.addExecutionBlock { () -> Void in diff --git a/Sources/Migrating/MigrationResult.swift b/Sources/Migrating/MigrationResult.swift index fa78d90..b3506ba 100644 --- a/Sources/Migrating/MigrationResult.swift +++ b/Sources/Migrating/MigrationResult.swift @@ -49,9 +49,9 @@ import Foundation // ... let result = transaction.commit() switch result { - case .Success(let hasChanges): + case .success(let hasChanges): // hasChanges indicates if there were changes or not - case .Failure(let error): + case .failure(let error): // error is a CoreStoreError enum value } } @@ -60,12 +60,12 @@ import Foundation public enum MigrationResult: Boolean, Hashable { /** - `MigrationResult.Success` indicates either the migration succeeded, or there were no migrations needed. The associated value is an array of `MigrationType`s reflecting the migration steps completed. + `MigrationResult.success` indicates either the migration succeeded, or there were no migrations needed. The associated value is an array of `MigrationType`s reflecting the migration steps completed. */ case success([MigrationType]) /** - `SaveResult.Failure` indicates that the migration failed. The associated object for this value is the a `CoreStoreError` enum value. + `SaveResult.failure` indicates that the migration failed. The associated object for this value is the a `CoreStoreError` enum value. */ case failure(CoreStoreError) @@ -119,7 +119,6 @@ public enum MigrationResult: Boolean, Hashable { // MARK: - SetupResult: Equatable -@warn_unused_result public func == (lhs: MigrationResult, rhs: MigrationResult) -> Bool { switch (lhs, rhs) { diff --git a/Sources/Migrating/MigrationType.swift b/Sources/Migrating/MigrationType.swift index 7e7ca8a..833ed85 100644 --- a/Sources/Migrating/MigrationType.swift +++ b/Sources/Migrating/MigrationType.swift @@ -144,7 +144,6 @@ public enum MigrationType: Boolean, Hashable { // MARK: - MigrationType: Equatable -@warn_unused_result public func == (lhs: MigrationType, rhs: MigrationType) -> Bool { switch (lhs, rhs) { diff --git a/Sources/Migrating/SetupResult.swift b/Sources/Migrating/SetupResult.swift index e90b3f7..5e3cd31 100644 --- a/Sources/Migrating/SetupResult.swift +++ b/Sources/Migrating/SetupResult.swift @@ -51,9 +51,9 @@ import CoreData SQLiteStore(), completion: { (result: SetupResult) -> Void in switch result { - case .Success(let storage): + case .success(let storage): // storage is the related StorageInterface instance - case .Failure(let error): + case .failure(let error): // error is the CoreStoreError enum value for the failure } } @@ -63,12 +63,12 @@ import CoreData public enum SetupResult: Boolean, Hashable { /** - `SetupResult.Success` indicates that the storage setup succeeded. The associated object for this `enum` value is the related `StorageInterface` instance. + `SetupResult.success` indicates that the storage setup succeeded. The associated object for this `enum` value is the related `StorageInterface` instance. */ case success(T) /** - `SetupResult.Failure` indicates that the storage setup failed. The associated object for this value is the related `CoreStoreError` enum value. + `SetupResult.failure` indicates that the storage setup failed. The associated object for this value is the related `CoreStoreError` enum value. */ case failure(CoreStoreError) @@ -121,7 +121,6 @@ public enum SetupResult: Boolean, Hashable { // MARK: - SetupResult: Equatable -@warn_unused_result public func == (lhs: SetupResult, rhs: SetupResult) -> Bool { switch (lhs, rhs) { @@ -147,12 +146,12 @@ public func == (lhs: SetupResult, r public enum PersistentStoreResult: Boolean { /** - Deprecated. Replaced by `SetupResult.Success` when using the new `addStorage(_:completion:)` method variants. + Deprecated. Replaced by `SetupResult.success` when using the new `addStorage(_:completion:)` method variants. */ case success(NSPersistentStore) /** - Deprecated. Replaced by `SetupResult.Failure` when using the new `addStorage(_:completion:)` method variants. + Deprecated. Replaced by `SetupResult.failure` when using the new `addStorage(_:completion:)` method variants. */ case failure(NSError) diff --git a/Sources/ObjectiveC/CSAsynchronousDataTransaction.swift b/Sources/ObjectiveC/CSAsynchronousDataTransaction.swift index cf58b81..c213a86 100644 --- a/Sources/ObjectiveC/CSAsynchronousDataTransaction.swift +++ b/Sources/ObjectiveC/CSAsynchronousDataTransaction.swift @@ -99,7 +99,6 @@ public final class CSAsynchronousDataTransaction: CSBaseDataTransaction { - returns: an editable proxy for the specified `NSManagedObject`. */ @objc - @warn_unused_result public override func editObject(_ object: NSManagedObject?) -> AnyObject? { return self.bridgeToSwift.edit(object) @@ -113,7 +112,6 @@ public final class CSAsynchronousDataTransaction: CSBaseDataTransaction { - returns: an editable proxy for the specified `NSManagedObject`. */ @objc - @warn_unused_result public override func editInto(_ into: CSInto, objectID: NSManagedObjectID) -> AnyObject? { return self.bridgeToSwift.edit(into.bridgeToSwift, objectID) diff --git a/Sources/ObjectiveC/CSBaseDataTransaction.swift b/Sources/ObjectiveC/CSBaseDataTransaction.swift index c645cda..808c603 100644 --- a/Sources/ObjectiveC/CSBaseDataTransaction.swift +++ b/Sources/ObjectiveC/CSBaseDataTransaction.swift @@ -67,7 +67,6 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType { - returns: an editable proxy for the specified `NSManagedObject`. */ @objc - @warn_unused_result public func editObject(_ object: NSManagedObject?) -> AnyObject? { return self.bridgeToSwift.edit(object) @@ -81,7 +80,6 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType { - returns: an editable proxy for the specified `NSManagedObject`. */ @objc - @warn_unused_result public func editInto(_ into: CSInto, objectID: NSManagedObjectID) -> AnyObject? { return self.bridgeToSwift.edit(into.bridgeToSwift, objectID) @@ -127,7 +125,6 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType { - returns: an `NSSet` of pending `NSManagedObject`s that were inserted to the transaction. */ @objc - @warn_unused_result public func insertedObjects() -> Set { return self.bridgeToSwift.insertedObjects() @@ -140,7 +137,6 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType { - returns: an `NSSet` of pending `NSManagedObject`s of the specified type that were inserted to the transaction. */ @objc - @warn_unused_result public func insertedObjectsOfType(_ entity: NSManagedObject.Type) -> Set { return self.bridgeToSwift.insertedObjects(entity) @@ -152,7 +148,6 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType { - returns: an `NSSet` of pending `NSManagedObjectID`s that were inserted to the transaction. */ @objc - @warn_unused_result public func insertedObjectIDs() -> Set { return self.bridgeToSwift.insertedObjectIDs() @@ -165,7 +160,6 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType { - returns: an `NSSet` of pending `NSManagedObjectID`s of the specified type that were inserted to the transaction. */ @objc - @warn_unused_result public func insertedObjectIDsOfType(_ entity: NSManagedObject.Type) -> Set { return self.bridgeToSwift.insertedObjectIDs(entity) @@ -177,7 +171,6 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType { - returns: an `NSSet` of pending `NSManagedObject`s that were updated to the transaction. */ @objc - @warn_unused_result public func updatedObjects() -> Set { return self.bridgeToSwift.updatedObjects() @@ -190,7 +183,6 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType { - returns: an `NSSet` of pending `NSManagedObject`s of the specified type that were updated in the transaction. */ @objc - @warn_unused_result public func updatedObjectsOfType(_ entity: NSManagedObject.Type) -> Set { return self.bridgeToSwift.updatedObjects(entity) @@ -202,7 +194,6 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType { - returns: an `NSSet` of pending `NSManagedObjectID`s that were updated in the transaction. */ @objc - @warn_unused_result public func updatedObjectIDs() -> Set { return self.bridgeToSwift.updatedObjectIDs() @@ -215,7 +206,6 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType { - returns: an `NSSet` of pending `NSManagedObjectID`s of the specified type that were updated in the transaction. */ @objc - @warn_unused_result public func updatedObjectIDsOfType(_ entity: NSManagedObject.Type) -> Set { return self.bridgeToSwift.updatedObjectIDs(entity) @@ -227,7 +217,6 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType { - returns: an `NSSet` of pending `NSManagedObject`s that were deleted from the transaction. */ @objc - @warn_unused_result public func deletedObjects() -> Set { return self.bridgeToSwift.deletedObjects() @@ -240,7 +229,6 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType { - returns: an `NSSet` of pending `NSManagedObject`s of the specified type that were deleted from the transaction. */ @objc - @warn_unused_result public func deletedObjectsOfType(_ entity: NSManagedObject.Type) -> Set { return self.bridgeToSwift.deletedObjects(entity) @@ -253,7 +241,6 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType { - returns: an `NSSet` of pending `NSManagedObjectID`s of the specified type that were deleted from the transaction. */ @objc - @warn_unused_result public func deletedObjectIDs() -> Set { return self.bridgeToSwift.deletedObjectIDs() @@ -266,7 +253,6 @@ public class CSBaseDataTransaction: NSObject, CoreStoreObjectiveCType { - returns: a `Set` of pending `NSManagedObjectID`s of the specified type that were deleted from the transaction. */ @objc - @warn_unused_result public func deletedObjectIDsOfType(_ entity: NSManagedObject.Type) -> Set { return self.bridgeToSwift.deletedObjectIDs(entity) diff --git a/Sources/ObjectiveC/CSCoreStore+Setup.swift b/Sources/ObjectiveC/CSCoreStore+Setup.swift index ca755d8..049c91e 100644 --- a/Sources/ObjectiveC/CSCoreStore+Setup.swift +++ b/Sources/ObjectiveC/CSCoreStore+Setup.swift @@ -80,6 +80,7 @@ public extension CSCoreStore { - returns: the `CSInMemoryStore` added to the `defaultStack` */ @objc + @discardableResult public static func addInMemoryStorageAndWaitAndReturnError(_ error: NSErrorPointer) -> CSInMemoryStore? { return self.defaultStack.addInMemoryStorageAndWaitAndReturnError(error) @@ -95,6 +96,7 @@ public extension CSCoreStore { - returns: the `CSSQLiteStore` added to the `defaultStack` */ @objc + @discardableResult public static func addSQLiteStorageAndWaitAndReturnError(_ error: NSErrorPointer) -> CSSQLiteStore? { return self.defaultStack.addSQLiteStorageAndWaitAndReturnError(error) @@ -114,6 +116,7 @@ public extension CSCoreStore { - returns: the `CSInMemoryStore` added to the `defaultStack` */ @objc + @discardableResult public static func addInMemoryStorageAndWait(_ storage: CSInMemoryStore, error: NSErrorPointer) -> CSInMemoryStore? { return self.defaultStack.addInMemoryStorageAndWait(storage, error: error) @@ -133,6 +136,7 @@ public extension CSCoreStore { - returns: the `CSSQLiteStore` added to the `defaultStack` */ @objc + @discardableResult public static func addSQLiteStorageAndWait(_ storage: CSSQLiteStore, error: NSErrorPointer) -> CSSQLiteStore? { return self.defaultStack.addSQLiteStorageAndWait(storage, error: error) diff --git a/Sources/ObjectiveC/CSDataStack+Observing.swift b/Sources/ObjectiveC/CSDataStack+Observing.swift index a5cf238..11c8076 100644 --- a/Sources/ObjectiveC/CSDataStack+Observing.swift +++ b/Sources/ObjectiveC/CSDataStack+Observing.swift @@ -74,9 +74,9 @@ public extension CSDataStack { dataStack: self.bridgeToSwift, from: from.bridgeToSwift, sectionBy: nil, - applyFetchClauses: { fetchRequest in + applyFetchClauses: { (fetchRequest) in - fetchClauses.forEach { $0.applyToFetchRequest(fetchRequest.cs_dynamicCast()) } + fetchClauses.forEach { $0.applyToFetchRequest(unsafeBitCast(fetchRequest, to: NSFetchRequest.self)) } } ) } @@ -104,9 +104,9 @@ public extension CSDataStack { dataStack: self.bridgeToSwift, from: from.bridgeToSwift, sectionBy: nil, - applyFetchClauses: { fetchRequest in + applyFetchClauses: { (fetchRequest) in - fetchClauses.forEach { $0.applyToFetchRequest(fetchRequest.cs_dynamicCast()) } + fetchClauses.forEach { $0.applyToFetchRequest(unsafeBitCast(fetchRequest, to: NSFetchRequest.self)) } }, createAsynchronously: { @@ -141,9 +141,9 @@ public extension CSDataStack { dataStack: self.bridgeToSwift, from: from.bridgeToSwift, sectionBy: sectionBy.bridgeToSwift, - applyFetchClauses: { fetchRequest in + applyFetchClauses: { (fetchRequest) in - fetchClauses.forEach { $0.applyToFetchRequest(fetchRequest.cs_dynamicCast()) } + fetchClauses.forEach { $0.applyToFetchRequest(unsafeBitCast(fetchRequest, to: NSFetchRequest.self)) } } ) } @@ -171,9 +171,9 @@ public extension CSDataStack { dataStack: self.bridgeToSwift, from: from.bridgeToSwift, sectionBy: sectionBy.bridgeToSwift, - applyFetchClauses: { fetchRequest in + applyFetchClauses: { (fetchRequest) in - fetchClauses.forEach { $0.applyToFetchRequest(fetchRequest.cs_dynamicCast()) } + fetchClauses.forEach { $0.applyToFetchRequest(unsafeBitCast(fetchRequest, to: NSFetchRequest.self)) } }, createAsynchronously: { diff --git a/Sources/ObjectiveC/CSDataStack.swift b/Sources/ObjectiveC/CSDataStack.swift index 190d283..9e71d9f 100644 --- a/Sources/ObjectiveC/CSDataStack.swift +++ b/Sources/ObjectiveC/CSDataStack.swift @@ -166,6 +166,7 @@ public final class CSDataStack: NSObject, CoreStoreObjectiveCType { - returns: the `CSInMemoryStore` added to the stack */ @objc + @discardableResult public func addInMemoryStorageAndWaitAndReturnError(_ error: NSErrorPointer) -> CSInMemoryStore? { return bridge(error) { @@ -184,6 +185,7 @@ public final class CSDataStack: NSObject, CoreStoreObjectiveCType { - returns: the `CSSQLiteStore` added to the stack */ @objc + @discardableResult public func addSQLiteStorageAndWaitAndReturnError(_ error: NSErrorPointer) -> CSSQLiteStore? { return bridge(error) { @@ -206,6 +208,7 @@ public final class CSDataStack: NSObject, CoreStoreObjectiveCType { - returns: the `CSInMemoryStore` added to the stack */ @objc + @discardableResult public func addInMemoryStorageAndWait(_ storage: CSInMemoryStore, error: NSErrorPointer) -> CSInMemoryStore? { return bridge(error) { @@ -228,6 +231,7 @@ public final class CSDataStack: NSObject, CoreStoreObjectiveCType { - returns: the `CSSQLiteStore` added to the stack */ @objc + @discardableResult public func addSQLiteStorageAndWait(_ storage: CSSQLiteStore, error: NSErrorPointer) -> CSSQLiteStore? { return bridge(error) { diff --git a/Sources/ObjectiveC/CSError.swift b/Sources/ObjectiveC/CSError.swift index 56dbfb6..fb03980 100644 --- a/Sources/ObjectiveC/CSError.swift +++ b/Sources/ObjectiveC/CSError.swift @@ -95,7 +95,7 @@ public final class CSError: NSError, CoreStoreObjectiveCType { case .unknownError: return .unknown - case .differentPersistentStoreExistsAtURL: + case .differentStorageExistsAtURL: guard case let existingPersistentStoreURL as URL = info["existingPersistentStoreURL"] else { return .unknown @@ -148,7 +148,7 @@ public final class CSError: NSError, CoreStoreObjectiveCType { info = [:] case .differentStorageExistsAtURL(let existingPersistentStoreURL): - code = .differentPersistentStoreExistsAtURL + code = .differentStorageExistsAtURL info = [ "existingPersistentStoreURL": existingPersistentStoreURL ] @@ -208,7 +208,7 @@ public enum CSErrorCode: Int { /** The `NSPersistentStore` could note be initialized because another store existed at the specified `NSURL`. */ - case differentPersistentStoreExistsAtURL + case differentStorageExistsAtURL /** An `NSMappingModel` could not be found for a specific source and destination model versions. diff --git a/Sources/ObjectiveC/CSListMonitor.swift b/Sources/ObjectiveC/CSListMonitor.swift index f6a0271..7ad6043 100644 --- a/Sources/ObjectiveC/CSListMonitor.swift +++ b/Sources/ObjectiveC/CSListMonitor.swift @@ -515,9 +515,9 @@ public final class CSListMonitor: NSObject, CoreStoreObjectiveCType { @objc public func refetch(_ fetchClauses: [CSFetchClause]) { - self.bridgeToSwift.refetch { (fetchRequest: NSFetchRequest) in + self.bridgeToSwift.refetch { (fetchRequest) in - fetchClauses.forEach { $0.applyToFetchRequest(fetchRequest.cs_dynamicCast()) } + fetchClauses.forEach { $0.applyToFetchRequest(unsafeBitCast(fetchRequest, to: NSFetchRequest.self)) } } } diff --git a/Sources/ObjectiveC/CSSynchronousDataTransaction.swift b/Sources/ObjectiveC/CSSynchronousDataTransaction.swift index 3c15810..774849d 100644 --- a/Sources/ObjectiveC/CSSynchronousDataTransaction.swift +++ b/Sources/ObjectiveC/CSSynchronousDataTransaction.swift @@ -99,7 +99,6 @@ public final class CSSynchronousDataTransaction: CSBaseDataTransaction { - returns: an editable proxy for the specified `NSManagedObject`. */ @objc - @warn_unused_result public override func editObject(_ object: NSManagedObject?) -> AnyObject? { return self.bridgeToSwift.edit(object) @@ -113,7 +112,6 @@ public final class CSSynchronousDataTransaction: CSBaseDataTransaction { - returns: an editable proxy for the specified `NSManagedObject`. */ @objc - @warn_unused_result public override func editInto(_ into: CSInto, objectID: NSManagedObjectID) -> AnyObject? { return self.bridgeToSwift.edit(into.bridgeToSwift, objectID) diff --git a/Sources/ObjectiveC/CoreStoreBridge.swift b/Sources/ObjectiveC/CoreStoreBridge.swift index 1a28d90..ab0c832 100644 --- a/Sources/ObjectiveC/CoreStoreBridge.swift +++ b/Sources/ObjectiveC/CoreStoreBridge.swift @@ -79,17 +79,17 @@ public extension CoreStoreSwiftType where ObjectiveCType: CoreStoreObjectiveCTyp // MARK: - Internal -internal func bridge(@noescape _ closure: () -> T) -> T.ObjectiveCType { +internal func bridge(_ closure: @noescape () -> T) -> T.ObjectiveCType { return closure().bridgeToObjectiveC } -internal func bridge(@noescape _ closure: () -> T?) -> T.ObjectiveCType? { +internal func bridge(_ closure: @noescape () -> T?) -> T.ObjectiveCType? { return closure()?.bridgeToObjectiveC } -internal func bridge(@noescape _ closure: () throws -> T) throws -> T.ObjectiveCType { +internal func bridge(_ closure: @noescape () throws -> T) throws -> T.ObjectiveCType { do { @@ -101,7 +101,7 @@ internal func bridge Void) throws { +internal func bridge(_ closure: @noescape () throws -> Void) throws { do { @@ -113,7 +113,7 @@ internal func bridge(@noescape _ closure: () throws -> Void) throws { } } -internal func bridge(_ error: NSErrorPointer, @noescape _ closure: () throws -> T) -> T.ObjectiveCType? { +internal func bridge(_ error: NSErrorPointer, _ closure: @noescape () throws -> T) -> T.ObjectiveCType? { do { @@ -128,7 +128,7 @@ internal func bridge(_ error: NSErrorPointer, @noescape _ } } -internal func bridge(_ error: NSErrorPointer, @noescape _ closure: () throws -> Void) -> Bool { +internal func bridge(_ error: NSErrorPointer, _ closure: @noescape () throws -> Void) -> Bool { do { @@ -143,7 +143,7 @@ internal func bridge(_ error: NSErrorPointer, @noescape _ closure: () throws -> } } -internal func bridge(_ error: NSErrorPointer, @noescape _ closure: () throws -> T?) -> T? { +internal func bridge(_ error: NSErrorPointer, _ closure: @noescape () throws -> T?) -> T? { do { @@ -158,7 +158,7 @@ internal func bridge(_ error: NSErrorPointer, @noescape _ closure: () throws } } -internal func bridge(_ error: NSErrorPointer, @noescape _ closure: () throws -> [T]) -> [T.ObjectiveCType]? { +internal func bridge(_ error: NSErrorPointer, _ closure: @noescape () throws -> [T]) -> [T.ObjectiveCType]? { do { diff --git a/Sources/Observing/CoreStore+Observing.swift b/Sources/Observing/CoreStore+Observing.swift index ebb5ed6..c3646c0 100644 --- a/Sources/Observing/CoreStore+Observing.swift +++ b/Sources/Observing/CoreStore+Observing.swift @@ -39,7 +39,6 @@ public extension CoreStore { - parameter object: the `NSManagedObject` to observe changes from - returns: a `ObjectMonitor` that monitors changes to `object` */ - @warn_unused_result public static func monitorObject(_ object: T) -> ObjectMonitor { return self.defaultStack.monitorObject(object) @@ -52,7 +51,6 @@ public extension CoreStore { - parameter fetchClauses: a series of `FetchClause` instances for fetching the object list. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: a `ListMonitor` instance that monitors changes to the list */ - @warn_unused_result public static func monitorList(_ from: From, _ fetchClauses: FetchClause...) -> ListMonitor { return self.defaultStack.monitorList(from, fetchClauses) @@ -65,7 +63,6 @@ public extension CoreStore { - parameter fetchClauses: a series of `FetchClause` instances for fetching the object list. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: a `ListMonitor` instance that monitors changes to the list */ - @warn_unused_result public static func monitorList(_ from: From, _ fetchClauses: [FetchClause]) -> ListMonitor { return self.defaultStack.monitorList(from, fetchClauses) @@ -103,7 +100,6 @@ public extension CoreStore { - parameter fetchClauses: a series of `FetchClause` instances for fetching the object list. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: a `ListMonitor` instance that monitors changes to the list */ - @warn_unused_result public static func monitorSectionedList(_ from: From, _ sectionBy: SectionBy, _ fetchClauses: FetchClause...) -> ListMonitor { return self.defaultStack.monitorSectionedList(from, sectionBy, fetchClauses) @@ -117,7 +113,6 @@ public extension CoreStore { - parameter fetchClauses: a series of `FetchClause` instances for fetching the object list. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: a `ListMonitor` instance that monitors changes to the list */ - @warn_unused_result public static func monitorSectionedList(_ from: From, _ sectionBy: SectionBy, _ fetchClauses: [FetchClause]) -> ListMonitor { return self.defaultStack.monitorSectionedList(from, sectionBy, fetchClauses) diff --git a/Sources/Observing/DataStack+Observing.swift b/Sources/Observing/DataStack+Observing.swift index 7697da6..dcb2d95 100644 --- a/Sources/Observing/DataStack+Observing.swift +++ b/Sources/Observing/DataStack+Observing.swift @@ -42,7 +42,6 @@ public extension DataStack { - parameter object: the `NSManagedObject` to observe changes from - returns: a `ObjectMonitor` that monitors changes to `object` */ - @warn_unused_result public func monitorObject(_ object: T) -> ObjectMonitor { CoreStore.assert( @@ -59,7 +58,6 @@ public extension DataStack { - parameter fetchClauses: a series of `FetchClause` instances for fetching the object list. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: a `ListMonitor` instance that monitors changes to the list */ - @warn_unused_result public func monitorList(_ from: From, _ fetchClauses: FetchClause...) -> ListMonitor { return self.monitorList(from, fetchClauses) @@ -72,7 +70,6 @@ public extension DataStack { - parameter fetchClauses: a series of `FetchClause` instances for fetching the object list. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: a `ListMonitor` instance that monitors changes to the list */ - @warn_unused_result public func monitorList(_ from: From, _ fetchClauses: [FetchClause]) -> ListMonitor { CoreStore.assert( @@ -145,7 +142,6 @@ public extension DataStack { - parameter fetchClauses: a series of `FetchClause` instances for fetching the object list. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: a `ListMonitor` instance that monitors changes to the list */ - @warn_unused_result public func monitorSectionedList(_ from: From, _ sectionBy: SectionBy, _ fetchClauses: FetchClause...) -> ListMonitor { return self.monitorSectionedList(from, sectionBy, fetchClauses) @@ -159,7 +155,6 @@ public extension DataStack { - parameter fetchClauses: a series of `FetchClause` instances for fetching the object list. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: a `ListMonitor` instance that monitors changes to the list */ - @warn_unused_result public func monitorSectionedList(_ from: From, _ sectionBy: SectionBy, _ fetchClauses: [FetchClause]) -> ListMonitor { CoreStore.assert( diff --git a/Sources/Observing/ListMonitor.swift b/Sources/Observing/ListMonitor.swift index fe154ec..bbc92e8 100644 --- a/Sources/Observing/ListMonitor.swift +++ b/Sources/Observing/ListMonitor.swift @@ -38,9 +38,9 @@ import CoreData The `ListMonitor` monitors changes to a list of `NSManagedObject` instances. Observers that implement the `ListObserver` protocol may then register themselves to the `ListMonitor`'s `addObserver(_:)` method: ``` let monitor = CoreStore.monitorList( - From(MyPersonEntity), + From(), Where("title", isEqualTo: "Engineer"), - OrderBy(.Ascending("lastName")) + OrderBy(.ascending("lastName")) ) monitor.addObserver(self) ``` @@ -56,10 +56,10 @@ import CoreData Creating a sectioned-list is also possible with the `monitorSectionedList(...)` method: ``` let monitor = CoreStore.monitorSectionedList( - From(MyPersonEntity), + From(), SectionBy("age") { "Age \($0)" }, Where("title", isEqualTo: "Engineer"), - OrderBy(.Ascending("lastName")) + OrderBy(.ascending("lastName")) ) monitor.addObserver(self) ``` @@ -168,7 +168,6 @@ public final class ListMonitor: Hashable { - returns: `true` if at least one section exists, `false` otherwise */ - @warn_unused_result public func hasSections() -> Bool { return self.sections().count > 0 @@ -179,7 +178,6 @@ public final class ListMonitor: Hashable { - returns: `true` if at least one object in any section exists, `false` otherwise */ - @warn_unused_result public func hasObjects() -> Bool { return self.numberOfObjects() > 0 @@ -191,7 +189,6 @@ public final class ListMonitor: Hashable { - parameter section: the section index. Using an index outside the valid range will return `false`. - returns: `true` if at least one object in the specified section exists, `false` otherwise */ - @warn_unused_result public func hasObjectsInSection(_ section: Int) -> Bool { return self.numberOfObjectsInSection(safeSectionIndex: section) > 0 @@ -202,7 +199,6 @@ public final class ListMonitor: Hashable { - returns: all objects in all sections */ - @warn_unused_result public func objectsInAllSections() -> [T] { CoreStore.assert( @@ -218,7 +214,6 @@ public final class ListMonitor: Hashable { - parameter section: the section index. Using an index outside the valid range will raise an exception. - returns: all objects in the specified section */ - @warn_unused_result public func objectsInSection(_ section: Int) -> [T] { return (self.sectionInfoAtIndex(section).objects as? [T]) ?? [] @@ -230,7 +225,6 @@ public final class ListMonitor: Hashable { - parameter section: the section index. Using an index outside the valid range will return `nil`. - returns: all objects in the specified section */ - @warn_unused_result public func objectsInSection(safeSectionIndex section: Int) -> [T]? { return (self.sectionInfoAtIndex(safeSectionIndex: section)?.objects as? [T]) ?? [] @@ -241,7 +235,6 @@ public final class ListMonitor: Hashable { - returns: the number of sections */ - @warn_unused_result public func numberOfSections() -> Int { CoreStore.assert( @@ -256,7 +249,6 @@ public final class ListMonitor: Hashable { - returns: the number of objects in all sections */ - @warn_unused_result public func numberOfObjects() -> Int { CoreStore.assert( @@ -272,7 +264,6 @@ public final class ListMonitor: Hashable { - parameter section: the section index. Using an index outside the valid range will raise an exception. - returns: the number of objects in the specified section */ - @warn_unused_result public func numberOfObjectsInSection(_ section: Int) -> Int { return self.sectionInfoAtIndex(section).numberOfObjects @@ -284,7 +275,6 @@ public final class ListMonitor: Hashable { - parameter section: the section index. Using an index outside the valid range will return `nil`. - returns: the number of objects in the specified section */ - @warn_unused_result public func numberOfObjectsInSection(safeSectionIndex section: Int) -> Int? { return self.sectionInfoAtIndex(safeSectionIndex: section)?.numberOfObjects @@ -296,7 +286,6 @@ public final class ListMonitor: Hashable { - parameter section: the section index. Using an index outside the valid range will raise an exception. - returns: the `NSFetchedResultsSectionInfo` for the specified section */ - @warn_unused_result public func sectionInfoAtIndex(_ section: Int) -> NSFetchedResultsSectionInfo { CoreStore.assert( @@ -312,7 +301,6 @@ public final class ListMonitor: Hashable { - parameter section: the section index. Using an index outside the valid range will return `nil`. - returns: the `NSFetchedResultsSectionInfo` for the specified section, or `nil` if the section index is out of bounds. */ - @warn_unused_result public func sectionInfoAtIndex(safeSectionIndex section: Int) -> NSFetchedResultsSectionInfo? { CoreStore.assert( @@ -336,7 +324,6 @@ public final class ListMonitor: Hashable { - returns: the `NSFetchedResultsSectionInfo`s for all sections */ - @warn_unused_result public func sections() -> [NSFetchedResultsSectionInfo] { CoreStore.assert( @@ -353,7 +340,6 @@ public final class ListMonitor: Hashable { - parameter index: the index of the Section Index - returns: the target section for the specified "Section Index" title and index. */ - @warn_unused_result public func targetSectionForSectionIndex(title: String, index: Int) -> Int { CoreStore.assert( @@ -368,7 +354,6 @@ public final class ListMonitor: Hashable { - returns: the section index titles for all sections */ - @warn_unused_result public func sectionIndexTitles() -> [String] { CoreStore.assert( @@ -384,7 +369,6 @@ public final class ListMonitor: Hashable { - parameter object: the `NSManagedObject` to search the index of - returns: the index of the `NSManagedObject` if it exists in the `ListMonitor`'s fetched objects, or `nil` if not found. */ - @warn_unused_result public func indexOf(_ object: T) -> Int? { CoreStore.assert( @@ -400,7 +384,6 @@ public final class ListMonitor: Hashable { - parameter object: the `NSManagedObject` to search the index of - returns: the `NSIndexPath` of the `NSManagedObject` if it exists in the `ListMonitor`'s fetched objects, or `nil` if not found. */ - @warn_unused_result public func indexPathOf(_ object: T) -> IndexPath? { CoreStore.assert( @@ -678,7 +661,7 @@ public final class ListMonitor: Hashable { return unsafeBitCast(self, to: ListMonitor.self) } - internal func registerChangeNotification(_ notificationKey: UnsafePointer, name: String, toObserver observer: AnyObject, callback: (monitor: ListMonitor) -> Void) { + internal func registerChangeNotification(_ notificationKey: UnsafePointer, name: Notification.Name, toObserver observer: AnyObject, callback: (monitor: ListMonitor) -> Void) { cs_setAssociatedRetainedObject( NotificationObserver( @@ -698,7 +681,7 @@ public final class ListMonitor: Hashable { ) } - internal func registerObjectNotification(_ notificationKey: UnsafePointer, name: String, toObserver observer: AnyObject, callback: (monitor: ListMonitor, object: T, indexPath: IndexPath?, newIndexPath: IndexPath?) -> Void) { + internal func registerObjectNotification(_ notificationKey: UnsafePointer, name: Notification.Name, toObserver observer: AnyObject, callback: (monitor: ListMonitor, object: T, indexPath: IndexPath?, newIndexPath: IndexPath?) -> Void) { cs_setAssociatedRetainedObject( NotificationObserver( @@ -707,16 +690,16 @@ public final class ListMonitor: Hashable { closure: { [weak self] (note) -> Void in guard let `self` = self, - let userInfo = (note as NSNotification).userInfo, - let object = userInfo[UserInfoKeyObject] as? T else { + let userInfo = note.userInfo, + let object = userInfo[String(NSManagedObject.self)] as? T else { return } callback( monitor: self, object: object, - indexPath: userInfo[UserInfoKeyIndexPath] as? IndexPath, - newIndexPath: userInfo[UserInfoKeyNewIndexPath] as? IndexPath + indexPath: userInfo[String(IndexPath.self)] as? IndexPath, + newIndexPath: userInfo["\(String(IndexPath.self)).New"] as? IndexPath ) } ), @@ -725,7 +708,7 @@ public final class ListMonitor: Hashable { ) } - internal func registerSectionNotification(_ notificationKey: UnsafePointer, name: String, toObserver observer: AnyObject, callback: (monitor: ListMonitor, sectionInfo: NSFetchedResultsSectionInfo, sectionIndex: Int) -> Void) { + internal func registerSectionNotification(_ notificationKey: UnsafePointer, name: Notification.Name, toObserver observer: AnyObject, callback: (monitor: ListMonitor, sectionInfo: NSFetchedResultsSectionInfo, sectionIndex: Int) -> Void) { cs_setAssociatedRetainedObject( NotificationObserver( @@ -734,9 +717,9 @@ public final class ListMonitor: Hashable { closure: { [weak self] (note) -> Void in guard let `self` = self, - let userInfo = (note as NSNotification).userInfo, - let sectionInfo = userInfo[UserInfoKeySectionInfo] as? NSFetchedResultsSectionInfo, - let sectionIndex = (userInfo[UserInfoKeySectionIndex] as? NSNumber)?.intValue else { + let userInfo = note.userInfo, + let sectionInfo = userInfo[String(NSFetchedResultsSectionInfo.self)] as? NSFetchedResultsSectionInfo, + let sectionIndex = (userInfo[String(NSNumber.self)] as? NSNumber)?.intValue else { return } @@ -760,7 +743,7 @@ public final class ListMonitor: Hashable { ) self.registerChangeNotification( &self.willChangeListKey, - name: ListMonitorWillChangeListNotification, + name: Notification.Name.listMonitorWillChangeList, toObserver: observer, callback: { [weak observer] (monitor) -> Void in @@ -773,7 +756,7 @@ public final class ListMonitor: Hashable { ) self.registerChangeNotification( &self.didChangeListKey, - name: ListMonitorDidChangeListNotification, + name: Notification.Name.listMonitorDidChangeList, toObserver: observer, callback: { [weak observer] (monitor) -> Void in @@ -786,7 +769,7 @@ public final class ListMonitor: Hashable { ) self.registerChangeNotification( &self.willRefetchListKey, - name: ListMonitorWillRefetchListNotification, + name: Notification.Name.listMonitorWillRefetchList, toObserver: observer, callback: { [weak observer] (monitor) -> Void in @@ -799,7 +782,7 @@ public final class ListMonitor: Hashable { ) self.registerChangeNotification( &self.didRefetchListKey, - name: ListMonitorDidRefetchListNotification, + name: Notification.Name.listMonitorDidRefetchList, toObserver: observer, callback: { [weak observer] (monitor) -> Void in @@ -821,7 +804,7 @@ public final class ListMonitor: Hashable { self.registerObjectNotification( &self.didInsertObjectKey, - name: ListMonitorDidInsertObjectNotification, + name: Notification.Name.listMonitorDidInsertObject, toObserver: observer, callback: { [weak observer] (monitor, object, indexPath, newIndexPath) -> Void in @@ -839,7 +822,7 @@ public final class ListMonitor: Hashable { ) self.registerObjectNotification( &self.didDeleteObjectKey, - name: ListMonitorDidDeleteObjectNotification, + name: Notification.Name.listMonitorDidDeleteObject, toObserver: observer, callback: { [weak observer] (monitor, object, indexPath, newIndexPath) -> Void in @@ -857,7 +840,7 @@ public final class ListMonitor: Hashable { ) self.registerObjectNotification( &self.didUpdateObjectKey, - name: ListMonitorDidUpdateObjectNotification, + name: Notification.Name.listMonitorDidUpdateObject, toObserver: observer, callback: { [weak observer] (monitor, object, indexPath, newIndexPath) -> Void in @@ -875,7 +858,7 @@ public final class ListMonitor: Hashable { ) self.registerObjectNotification( &self.didMoveObjectKey, - name: ListMonitorDidMoveObjectNotification, + name: Notification.Name.listMonitorDidMoveObject, toObserver: observer, callback: { [weak observer] (monitor, object, indexPath, newIndexPath) -> Void in @@ -903,7 +886,7 @@ public final class ListMonitor: Hashable { self.registerSectionNotification( &self.didInsertSectionKey, - name: ListMonitorDidInsertSectionNotification, + name: Notification.Name.listMonitorDidInsertSection, toObserver: observer, callback: { [weak observer] (monitor, sectionInfo, sectionIndex) -> Void in @@ -921,7 +904,7 @@ public final class ListMonitor: Hashable { ) self.registerSectionNotification( &self.didDeleteSectionKey, - name: ListMonitorDidDeleteSectionNotification, + name: Notification.Name.listMonitorDidDeleteSection, toObserver: observer, callback: { [weak observer] (monitor, sectionInfo, sectionIndex) -> Void in @@ -972,7 +955,7 @@ public final class ListMonitor: Hashable { self.isPendingRefetch = true NotificationCenter.default.post( - name: Notification.Name(rawValue: ListMonitorWillRefetchListNotification), + name: Notification.Name.listMonitorWillRefetchList, object: self ) } @@ -1008,7 +991,7 @@ public final class ListMonitor: Hashable { self.isPendingRefetch = false NotificationCenter.default.post( - name: NSNotification.Name(rawValue: ListMonitorDidRefetchListNotification), + name: Notification.Name.listMonitorDidRefetchList, object: self ) } @@ -1110,7 +1093,7 @@ public final class ListMonitor: Hashable { } self.observerForWillChangePersistentStore = NotificationObserver( - notificationName: NSNotification.Name.NSPersistentStoreCoordinatorStoresWillChange.rawValue, + notificationName: NSNotification.Name.NSPersistentStoreCoordinatorStoresWillChange, object: coordinator, queue: OperationQueue.main, closure: { [weak self] (note) -> Void in @@ -1132,7 +1115,7 @@ public final class ListMonitor: Hashable { ) self.observerForDidChangePersistentStore = NotificationObserver( - notificationName: NSNotification.Name.NSPersistentStoreCoordinatorStoresDidChange.rawValue, + notificationName: NSNotification.Name.NSPersistentStoreCoordinatorStoresDidChange, object: coordinator, queue: OperationQueue.main, closure: { [weak self] (note) -> Void in @@ -1180,25 +1163,21 @@ public final class ListMonitor: Hashable { // MARK: - ListMonitor: Equatable -@warn_unused_result public func == (lhs: ListMonitor, rhs: ListMonitor) -> Bool { return lhs === rhs } -@warn_unused_result public func == (lhs: ListMonitor, rhs: ListMonitor) -> Bool { return lhs.fetchedResultsController === rhs.fetchedResultsController } -@warn_unused_result public func ~= (lhs: ListMonitor, rhs: ListMonitor) -> Bool { return lhs === rhs } -@warn_unused_result public func ~= (lhs: ListMonitor, rhs: ListMonitor) -> Bool { return lhs.fetchedResultsController === rhs.fetchedResultsController @@ -1219,42 +1198,42 @@ extension ListMonitor: FetchedResultsControllerHandler { case .insert: NotificationCenter.default.post( - name: Notification.Name(rawValue: ListMonitorDidInsertObjectNotification), + name: Notification.Name.listMonitorDidInsertObject, object: self, userInfo: [ - UserInfoKeyObject: anObject, - UserInfoKeyNewIndexPath: newIndexPath! + String(NSManagedObject.self): anObject, + "\(String(IndexPath.self)).New": newIndexPath! ] ) case .delete: NotificationCenter.default.post( - name: Notification.Name(rawValue: ListMonitorDidDeleteObjectNotification), + name: Notification.Name.listMonitorDidDeleteObject, object: self, userInfo: [ - UserInfoKeyObject: anObject, - UserInfoKeyIndexPath: indexPath! + String(NSManagedObject.self): anObject, + String(IndexPath.self): indexPath! ] ) case .update: NotificationCenter.default.post( - name: Notification.Name(rawValue: ListMonitorDidUpdateObjectNotification), + name: Notification.Name.listMonitorDidUpdateObject, object: self, userInfo: [ - UserInfoKeyObject: anObject, - UserInfoKeyIndexPath: indexPath! + String(NSManagedObject.self): anObject, + String(IndexPath.self): indexPath! ] ) case .move: NotificationCenter.default.post( - name: Notification.Name(rawValue: ListMonitorDidMoveObjectNotification), + name: Notification.Name.listMonitorDidMoveObject, object: self, userInfo: [ - UserInfoKeyObject: anObject, - UserInfoKeyIndexPath: indexPath!, - UserInfoKeyNewIndexPath: newIndexPath! + String(NSManagedObject.self): anObject, + String(IndexPath.self): indexPath!, + "\(String(IndexPath.self)).New": newIndexPath! ] ) } @@ -1266,21 +1245,21 @@ extension ListMonitor: FetchedResultsControllerHandler { case .insert: NotificationCenter.default.post( - name: Notification.Name(rawValue: ListMonitorDidInsertSectionNotification), + name: Notification.Name.listMonitorDidInsertSection, object: self, userInfo: [ - UserInfoKeySectionInfo: sectionInfo, - UserInfoKeySectionIndex: NSNumber(value: sectionIndex) + String(NSFetchedResultsSectionInfo.self): sectionInfo, + String(NSNumber.self): NSNumber(value: sectionIndex) ] ) case .delete: NotificationCenter.default.post( - name: Notification.Name(rawValue: ListMonitorDidDeleteSectionNotification), + name: Notification.Name.listMonitorDidDeleteSection, object: self, userInfo: [ - UserInfoKeySectionInfo: sectionInfo, - UserInfoKeySectionIndex: NSNumber(value: sectionIndex) + String(NSFetchedResultsSectionInfo.self): sectionInfo, + String(NSNumber.self): NSNumber(value: sectionIndex) ] ) @@ -1293,7 +1272,7 @@ extension ListMonitor: FetchedResultsControllerHandler { self.taskGroup.enter() NotificationCenter.default.post( - name: Notification.Name(rawValue: ListMonitorWillChangeListNotification), + name: Notification.Name.listMonitorWillChangeList, object: self ) } @@ -1301,7 +1280,7 @@ extension ListMonitor: FetchedResultsControllerHandler { internal func controllerDidChangeContent(_ controller: NSFetchedResultsController) { NotificationCenter.default.post( - name: Notification.Name(rawValue: ListMonitorDidChangeListNotification), + name: Notification.Name.listMonitorDidChangeList, object: self ) self.taskGroup.leave() @@ -1315,25 +1294,19 @@ extension ListMonitor: FetchedResultsControllerHandler { // MARK: - Notification Keys - -private let ListMonitorWillChangeListNotification = "ListMonitorWillChangeListNotification" -private let ListMonitorDidChangeListNotification = "ListMonitorDidChangeListNotification" -private let ListMonitorWillRefetchListNotification = "ListMonitorWillRefetchListNotification" -private let ListMonitorDidRefetchListNotification = "ListMonitorDidRefetchListNotification" - -private let ListMonitorDidInsertObjectNotification = "ListMonitorDidInsertObjectNotification" -private let ListMonitorDidDeleteObjectNotification = "ListMonitorDidDeleteObjectNotification" -private let ListMonitorDidUpdateObjectNotification = "ListMonitorDidUpdateObjectNotification" -private let ListMonitorDidMoveObjectNotification = "ListMonitorDidMoveObjectNotification" - -private let ListMonitorDidInsertSectionNotification = "ListMonitorDidInsertSectionNotification" -private let ListMonitorDidDeleteSectionNotification = "ListMonitorDidDeleteSectionNotification" - -private let UserInfoKeyObject = "UserInfoKeyObject" -private let UserInfoKeyIndexPath = "UserInfoKeyIndexPath" -private let UserInfoKeyNewIndexPath = "UserInfoKeyNewIndexPath" - -private let UserInfoKeySectionInfo = "UserInfoKeySectionInfo" -private let UserInfoKeySectionIndex = "UserInfoKeySectionIndex" + +private extension Notification.Name { + + private static let listMonitorWillChangeList = Notification.Name(rawValue: "listMonitorWillChangeList") + private static let listMonitorDidChangeList = Notification.Name(rawValue: "listMonitorDidChangeList") + private static let listMonitorWillRefetchList = Notification.Name(rawValue: "listMonitorWillRefetchList") + private static let listMonitorDidRefetchList = Notification.Name(rawValue: "listMonitorDidRefetchList") + private static let listMonitorDidInsertObject = Notification.Name(rawValue: "listMonitorDidInsertObject") + private static let listMonitorDidDeleteObject = Notification.Name(rawValue: "listMonitorDidDeleteObject") + private static let listMonitorDidUpdateObject = Notification.Name(rawValue: "listMonitorDidUpdateObject") + private static let listMonitorDidMoveObject = Notification.Name(rawValue: "listMonitorDidMoveObject") + private static let listMonitorDidInsertSection = Notification.Name(rawValue: "listMonitorDidInsertSection") + private static let listMonitorDidDeleteSection = Notification.Name(rawValue: "listMonitorDidDeleteSection") +} #endif diff --git a/Sources/Observing/ListObserver.swift b/Sources/Observing/ListObserver.swift index 5ae05fb..ce1e2a0 100644 --- a/Sources/Observing/ListObserver.swift +++ b/Sources/Observing/ListObserver.swift @@ -35,8 +35,8 @@ import CoreData Implement the `ListObserver` protocol to observe changes to a list of `NSManagedObject`s. `ListObserver`s may register themselves to a `ListMonitor`'s `addObserver(_:)` method: ``` let monitor = CoreStore.monitorList( - From(MyPersonEntity), - OrderBy(.Ascending("lastName")) + From(), + OrderBy(.ascending("lastName")) ) monitor.addObserver(self) ``` @@ -110,8 +110,8 @@ public extension ListObserver { Implement the `ListObjectObserver` protocol to observe detailed changes to a list's object. `ListObjectObserver`s may register themselves to a `ListMonitor`'s `addObserver(_:)` method: ``` let monitor = CoreStore.monitorList( - From(MyPersonEntity), - OrderBy(.Ascending("lastName")) + From(), + OrderBy(.ascending("lastName")) ) monitor.addObserver(self) ``` @@ -189,9 +189,9 @@ public extension ListObjectObserver { Implement the `ListSectionObserver` protocol to observe changes to a list's section info. `ListSectionObserver`s may register themselves to a `ListMonitor`'s `addObserver(_:)` method: ``` let monitor = CoreStore.monitorSectionedList( - From(MyPersonEntity), + From(), SectionBy("age") { "Age \($0)" }, - OrderBy(.Ascending("lastName")) + OrderBy(.ascending("lastName")) ) monitor.addObserver(self) ``` diff --git a/Sources/Observing/ObjectMonitor.swift b/Sources/Observing/ObjectMonitor.swift index d55e087..0b7d9d1 100644 --- a/Sources/Observing/ObjectMonitor.swift +++ b/Sources/Observing/ObjectMonitor.swift @@ -134,7 +134,7 @@ public final class ObjectMonitor { ) self.registerChangeNotification( &self.willChangeObjectKey, - name: ObjectMonitorWillChangeObjectNotification, + name: Notification.Name.objectMonitorWillChangeObject, toObserver: observer, callback: { [weak observer] (monitor) -> Void in @@ -147,7 +147,7 @@ public final class ObjectMonitor { ) self.registerObjectNotification( &self.didDeleteObjectKey, - name: ObjectMonitorDidDeleteObjectNotification, + name: Notification.Name.objectMonitorDidDeleteObject, toObserver: observer, callback: { [weak observer] (monitor, object) -> Void in @@ -160,7 +160,7 @@ public final class ObjectMonitor { ) self.registerObjectNotification( &self.didUpdateObjectKey, - name: ObjectMonitorDidUpdateObjectNotification, + name: Notification.Name.objectMonitorDidUpdateObject, toObserver: observer, callback: { [weak self, weak observer] (monitor, object) -> Void in @@ -255,7 +255,7 @@ public final class ObjectMonitor { self.lastCommittedAttributes = (self.object?.committedValues(forKeys: nil) as? [String: NSObject]) ?? [:] } - private func registerChangeNotification(_ notificationKey: UnsafePointer, name: String, toObserver observer: AnyObject, callback: (monitor: ObjectMonitor) -> Void) { + private func registerChangeNotification(_ notificationKey: UnsafePointer, name: Notification.Name, toObserver observer: AnyObject, callback: (monitor: ObjectMonitor) -> Void) { cs_setAssociatedRetainedObject( NotificationObserver( @@ -275,7 +275,7 @@ public final class ObjectMonitor { ) } - private func registerObjectNotification(_ notificationKey: UnsafePointer, name: String, toObserver observer: AnyObject, callback: (monitor: ObjectMonitor, object: EntityType) -> Void) { + private func registerObjectNotification(_ notificationKey: UnsafePointer, name: Notification.Name, toObserver observer: AnyObject, callback: (monitor: ObjectMonitor, object: EntityType) -> Void) { cs_setAssociatedRetainedObject( NotificationObserver( @@ -284,8 +284,8 @@ public final class ObjectMonitor { closure: { [weak self] (note) -> Void in guard let `self` = self, - let userInfo = (note as NSNotification).userInfo, - let object = userInfo[UserInfoKeyObject] as? EntityType else { + let userInfo = note.userInfo, + let object = userInfo[String(NSManagedObject.self)] as? EntityType else { return } @@ -323,7 +323,7 @@ extension ObjectMonitor: FetchedResultsControllerHandler { internal func controllerWillChangeContent(_ controller: NSFetchedResultsController) { NotificationCenter.default.post( - name: Notification.Name(rawValue: ObjectMonitorWillChangeObjectNotification), + name: Notification.Name.objectMonitorWillChangeObject, object: self ) } @@ -336,16 +336,16 @@ extension ObjectMonitor: FetchedResultsControllerHandler { case .delete: NotificationCenter.default.post( - name: Notification.Name(rawValue: ObjectMonitorDidDeleteObjectNotification), + name: Notification.Name.objectMonitorDidDeleteObject, object: self, - userInfo: [UserInfoKeyObject: anObject] + userInfo: [String(NSManagedObject.self): anObject] ) case .update: NotificationCenter.default.post( - name: Notification.Name(rawValue: ObjectMonitorDidUpdateObjectNotification), + name: Notification.Name.objectMonitorDidUpdateObject, object: self, - userInfo: [UserInfoKeyObject: anObject] + userInfo: [String(NSManagedObject.self): anObject] ) default: @@ -360,12 +360,15 @@ extension ObjectMonitor: FetchedResultsControllerHandler { return sectionName } } + + +// MARK: - Notification.Name - -private let ObjectMonitorWillChangeObjectNotification = "ObjectMonitorWillChangeObjectNotification" -private let ObjectMonitorDidDeleteObjectNotification = "ObjectMonitorDidDeleteObjectNotification" -private let ObjectMonitorDidUpdateObjectNotification = "ObjectMonitorDidUpdateObjectNotification" - -private let UserInfoKeyObject = "UserInfoKeyObject" +private extension Notification.Name { + + private static let objectMonitorWillChangeObject = Notification.Name(rawValue: "objectMonitorWillChangeObject") + private static let objectMonitorDidDeleteObject = Notification.Name(rawValue: "objectMonitorWillChangeObject") + private static let objectMonitorDidUpdateObject = Notification.Name(rawValue: "objectMonitorWillChangeObject") +} #endif diff --git a/Sources/Observing/SectionBy.swift b/Sources/Observing/SectionBy.swift index e472fa3..ebc5385 100644 --- a/Sources/Observing/SectionBy.swift +++ b/Sources/Observing/SectionBy.swift @@ -35,9 +35,9 @@ import CoreData The `SectionBy` clause indicates the key path to use to group the `ListMonitor` objects into sections. An optional closure can also be provided to transform the value into an appropriate section name: ``` let monitor = CoreStore.monitorSectionedList( - From(MyPersonEntity), + From(), SectionBy("age") { "Age \($0)" }, - OrderBy(.Ascending("lastName")) + OrderBy(.ascending("lastName")) ) ``` */ diff --git a/Sources/Observing/UnsafeDataTransaction+Observing.swift b/Sources/Observing/UnsafeDataTransaction+Observing.swift index ecc8541..d279a94 100644 --- a/Sources/Observing/UnsafeDataTransaction+Observing.swift +++ b/Sources/Observing/UnsafeDataTransaction+Observing.swift @@ -42,7 +42,6 @@ public extension UnsafeDataTransaction { - parameter object: the `NSManagedObject` to observe changes from - returns: a `ObjectMonitor` that monitors changes to `object` */ - @warn_unused_result public func monitorObject(_ object: T) -> ObjectMonitor { return ObjectMonitor( @@ -58,7 +57,6 @@ public extension UnsafeDataTransaction { - parameter fetchClauses: a series of `FetchClause` instances for fetching the object list. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: a `ListMonitor` instance that monitors changes to the list */ - @warn_unused_result public func monitorList(_ from: From, _ fetchClauses: FetchClause...) -> ListMonitor { return self.monitorList(from, fetchClauses) @@ -71,7 +69,6 @@ public extension UnsafeDataTransaction { - parameter fetchClauses: a series of `FetchClause` instances for fetching the object list. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: a `ListMonitor` instance that monitors changes to the list */ - @warn_unused_result public func monitorList(_ from: From, _ fetchClauses: [FetchClause]) -> ListMonitor { CoreStore.assert( @@ -136,7 +133,6 @@ public extension UnsafeDataTransaction { - parameter fetchClauses: a series of `FetchClause` instances for fetching the object list. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: a `ListMonitor` instance that monitors changes to the list */ - @warn_unused_result public func monitorSectionedList(_ from: From, _ sectionBy: SectionBy, _ fetchClauses: FetchClause...) -> ListMonitor { return self.monitorSectionedList(from, sectionBy, fetchClauses) @@ -150,7 +146,6 @@ public extension UnsafeDataTransaction { - parameter fetchClauses: a series of `FetchClause` instances for fetching the object list. Accepts `Where`, `OrderBy`, and `Tweak` clauses. - returns: a `ListMonitor` instance that monitors changes to the list */ - @warn_unused_result public func monitorSectionedList(_ from: From, _ sectionBy: SectionBy, _ fetchClauses: [FetchClause]) -> ListMonitor { CoreStore.assert( diff --git a/Sources/Setup/CoreStore+Setup.swift b/Sources/Setup/CoreStore+Setup.swift index 67a9818..ad67e6e 100644 --- a/Sources/Setup/CoreStore+Setup.swift +++ b/Sources/Setup/CoreStore+Setup.swift @@ -98,6 +98,7 @@ public extension CoreStore { - throws: a `CoreStoreError` value indicating the failure - returns: the `StorageInterface` added to the `defaultStack` */ + @discardableResult public static func addStorageAndWait(_ storage: T) throws -> T { return try self.defaultStack.addStorageAndWait(storage) @@ -113,6 +114,7 @@ public extension CoreStore { - throws: a `CoreStoreError` value indicating the failure - returns: the local storage added to the `defaultStack` */ + @discardableResult public static func addStorageAndWait(_ storageType: T.Type) throws -> T { return try self.defaultStack.addStorageAndWait(storageType.init()) @@ -128,6 +130,7 @@ public extension CoreStore { - throws: a `CoreStoreError` value indicating the failure - returns: the local storage added to the `defaultStack`. Note that this may not always be the same instance as the parameter argument if a previous `LocalStorage` was already added at the same URL and with the same configuration. */ + @discardableResult public static func addStorageAndWait(_ storage: T) throws -> T { return try self.defaultStack.addStorageAndWait(storage) @@ -154,6 +157,7 @@ public extension CoreStore { - throws: a `CoreStoreError` value indicating the failure - returns: the cloud storage added to the stack. Note that this may not always be the same instance as the parameter argument if a previous `CloudStorage` was already added at the same URL and with the same configuration. */ + @discardableResult public static func addStorageAndWait(_ storage: T) throws -> T { return try self.defaultStack.addStorageAndWait(storage) diff --git a/Sources/Setup/DataStack.swift b/Sources/Setup/DataStack.swift index b45493f..9a014ce 100644 --- a/Sources/Setup/DataStack.swift +++ b/Sources/Setup/DataStack.swift @@ -120,6 +120,7 @@ public final class DataStack { - throws: a `CoreStoreError` value indicating the failure - returns: the local SQLite storage added to the stack */ + @discardableResult public func addStorageAndWait() throws -> SQLiteStore { return try self.addStorageAndWait(SQLiteStore.self) @@ -135,6 +136,7 @@ public final class DataStack { - throws: a `CoreStoreError` value indicating the failure - returns: the `StorageInterface` added to the stack */ + @discardableResult public func addStorageAndWait(_ storeType: T.Type) throws -> T { return try self.addStorageAndWait(storeType.init()) @@ -150,6 +152,7 @@ public final class DataStack { - throws: a `CoreStoreError` value indicating the failure - returns: the `StorageInterface` added to the stack */ + @discardableResult public func addStorageAndWait(_ storage: T) throws -> T { do { @@ -189,6 +192,7 @@ public final class DataStack { - throws: a `CoreStoreError` value indicating the failure - returns: the local storage added to the stack */ + @discardableResult public func addStorageAndWait(_ storageType: T.Type) throws -> T { return try self.addStorageAndWait(storageType.init()) @@ -204,6 +208,7 @@ public final class DataStack { - throws: a `CoreStoreError` value indicating the failure - returns: the local storage added to the stack. Note that this may not always be the same instance as the parameter argument if a previous `LocalStorage` was already added at the same URL and with the same configuration. */ + @discardableResult public func addStorageAndWait(_ storage: T) throws -> T { return try self.coordinator.performSynchronously { @@ -304,6 +309,7 @@ public final class DataStack { - throws: a `CoreStoreError` value indicating the failure - returns: the cloud storage added to the stack. Note that this may not always be the same instance as the parameter argument if a previous `CloudStorage` was already added at the same URL and with the same configuration. */ + @discardableResult public func addStorageAndWait(_ storage: T) throws -> T { return try self.coordinator.performSynchronously { @@ -388,7 +394,7 @@ public final class DataStack { internal let mainContext: NSManagedObjectContext internal let model: NSManagedObjectModel internal let migrationChain: MigrationChain - internal let childTransactionQueue: GCDQueue = .createSerial("com.coreStore.dataStack.childTransactionQueue") + internal let childTransactionQueue = GCDQueue.createSerial("com.coreStore.dataStack.childTransactionQueue") internal let storeMetadataUpdateQueue = GCDQueue.createConcurrent("com.coreStore.persistentStoreBarrierQueue") internal let migrationQueue: OperationQueue = { @@ -396,10 +402,7 @@ public final class DataStack { migrationQueue.maxConcurrentOperationCount = 1 migrationQueue.name = "com.coreStore.migrationOperationQueue" migrationQueue.qualityOfService = .utility - migrationQueue.underlyingQueue = DispatchQueue( - label: "com.coreStore.migrationQueue", - attributes: .serial - ) + migrationQueue.underlyingQueue = GCDQueue.createSerial("com.coreStore.migrationQueue").dispatchQueue() return migrationQueue }() diff --git a/Sources/Setup/StorageInterfaces/ICloudStore.swift b/Sources/Setup/StorageInterfaces/ICloudStore.swift index d32a2a7..b02a368 100644 --- a/Sources/Setup/StorageInterfaces/ICloudStore.swift +++ b/Sources/Setup/StorageInterfaces/ICloudStore.swift @@ -121,7 +121,7 @@ public class ICloudStore: CloudStorage { self.registerNotification( &self.willFinishInitialImportKey, - name: ICloudUbiquitousStoreWillFinishInitialImportNotification, + name: Notification.Name.iCloudUbiquitousStoreWillFinishInitialImport, toObserver: observer, callback: { (observer, storage, dataStack) in @@ -130,7 +130,7 @@ public class ICloudStore: CloudStorage { ) self.registerNotification( &self.didFinishInitialImportKey, - name: ICloudUbiquitousStoreDidFinishInitialImportNotification, + name: Notification.Name.iCloudUbiquitousStoreDidFinishInitialImport, toObserver: observer, callback: { (observer, storage, dataStack) in @@ -139,7 +139,7 @@ public class ICloudStore: CloudStorage { ) self.registerNotification( &self.willAddAccountKey, - name: ICloudUbiquitousStoreWillAddAccountNotification, + name: Notification.Name.iCloudUbiquitousStoreWillAddAccount, toObserver: observer, callback: { (observer, storage, dataStack) in @@ -148,7 +148,7 @@ public class ICloudStore: CloudStorage { ) self.registerNotification( &self.didAddAccountKey, - name: ICloudUbiquitousStoreDidAddAccountNotification, + name: Notification.Name.iCloudUbiquitousStoreDidAddAccount, toObserver: observer, callback: { (observer, storage, dataStack) in @@ -157,7 +157,7 @@ public class ICloudStore: CloudStorage { ) self.registerNotification( &self.willRemoveAccountKey, - name: ICloudUbiquitousStoreWillRemoveAccountNotification, + name: Notification.Name.iCloudUbiquitousStoreWillRemoveAccount, toObserver: observer, callback: { (observer, storage, dataStack) in @@ -166,7 +166,7 @@ public class ICloudStore: CloudStorage { ) self.registerNotification( &self.didRemoveAccountKey, - name: ICloudUbiquitousStoreDidRemoveAccountNotification, + name: Notification.Name.iCloudUbiquitousStoreDidRemoveAccount, toObserver: observer, callback: { (observer, storage, dataStack) in @@ -175,7 +175,7 @@ public class ICloudStore: CloudStorage { ) self.registerNotification( &self.willRemoveContentKey, - name: ICloudUbiquitousStoreWillRemoveContentNotification, + name: Notification.Name.iCloudUbiquitousStoreWillRemoveContent, toObserver: observer, callback: { (observer, storage, dataStack) in @@ -184,7 +184,7 @@ public class ICloudStore: CloudStorage { ) self.registerNotification( &self.didRemoveContentKey, - name: ICloudUbiquitousStoreDidRemoveContentNotification, + name: Notification.Name.iCloudUbiquitousStoreDidRemoveContent, toObserver: observer, callback: { (observer, storage, dataStack) in @@ -280,40 +280,40 @@ public class ICloudStore: CloudStorage { cs_setAssociatedRetainedObject( NotificationObserver( - notificationName: NSNotification.Name.NSPersistentStoreCoordinatorStoresWillChange.rawValue, + notificationName: Notification.Name.NSPersistentStoreCoordinatorStoresWillChange, object: coordinator, closure: { [weak self, weak dataStack] (note) -> Void in guard let `self` = self, let dataStack = dataStack, - let userInfo = (note as NSNotification).userInfo, + let userInfo = note.userInfo, let transitionType = userInfo[NSPersistentStoreUbiquitousTransitionTypeKey] as? NSNumber else { return } - let notification: String + let notification: Notification.Name switch NSPersistentStoreUbiquitousTransitionType(rawValue: transitionType.uintValue) { case .initialImportCompleted?: - notification = ICloudUbiquitousStoreWillFinishInitialImportNotification + notification = Notification.Name.iCloudUbiquitousStoreWillFinishInitialImport case .accountAdded?: - notification = ICloudUbiquitousStoreWillAddAccountNotification + notification = Notification.Name.iCloudUbiquitousStoreWillAddAccount case .accountRemoved?: - notification = ICloudUbiquitousStoreWillRemoveAccountNotification + notification = Notification.Name.iCloudUbiquitousStoreWillRemoveAccount case .contentRemoved?: - notification = ICloudUbiquitousStoreWillRemoveContentNotification + notification = Notification.Name.iCloudUbiquitousStoreWillRemoveContent default: return } NotificationCenter.default.post( - name: Notification.Name(rawValue: notification), + name: notification, object: self, - userInfo: [UserInfoKeyDataStack: dataStack] + userInfo: [String(DataStack.self): dataStack] ) } ), @@ -322,40 +322,40 @@ public class ICloudStore: CloudStorage { ) cs_setAssociatedRetainedObject( NotificationObserver( - notificationName: NSNotification.Name.NSPersistentStoreCoordinatorStoresDidChange.rawValue, + notificationName: NSNotification.Name.NSPersistentStoreCoordinatorStoresDidChange, object: coordinator, closure: { [weak self, weak dataStack] (note) -> Void in guard let `self` = self, let dataStack = dataStack, - let userInfo = (note as NSNotification).userInfo, + let userInfo = note.userInfo, let transitionType = userInfo[NSPersistentStoreUbiquitousTransitionTypeKey] as? NSNumber else { return } - let notification: String + let notification: Notification.Name switch NSPersistentStoreUbiquitousTransitionType(rawValue: transitionType.uintValue) { case .initialImportCompleted?: - notification = ICloudUbiquitousStoreDidFinishInitialImportNotification + notification = Notification.Name.iCloudUbiquitousStoreDidFinishInitialImport case .accountAdded?: - notification = ICloudUbiquitousStoreDidAddAccountNotification + notification = Notification.Name.iCloudUbiquitousStoreDidAddAccount case .accountRemoved?: - notification = ICloudUbiquitousStoreDidRemoveAccountNotification + notification = Notification.Name.iCloudUbiquitousStoreDidRemoveAccount case .contentRemoved?: - notification = ICloudUbiquitousStoreDidRemoveContentNotification + notification = Notification.Name.iCloudUbiquitousStoreDidRemoveContent default: return } NotificationCenter.default.post( - name: Notification.Name(rawValue: notification), + name: notification, object: self, - userInfo: [UserInfoKeyDataStack: dataStack] + userInfo: [String(DataStack.self): dataStack] ) } ), @@ -429,7 +429,7 @@ public class ICloudStore: CloudStorage { // TODO: check if attached to persistent store let cacheFileURL = self.cacheFileURL - try cs_autoreleasepool { + try autoreleasepool { let journalUpdatingCoordinator = NSPersistentStoreCoordinator(managedObjectModel: soureModel) let options = [ @@ -471,7 +471,7 @@ public class ICloudStore: CloudStorage { private weak var dataStack: DataStack? - private func registerNotification(_ notificationKey: UnsafePointer, name: String, toObserver observer: T, callback: (observer: T, storage: ICloudStore, dataStack: DataStack) -> Void) { + private func registerNotification(_ notificationKey: UnsafePointer, name: Notification.Name, toObserver observer: T, callback: (observer: T, storage: ICloudStore, dataStack: DataStack) -> Void) { cs_setAssociatedRetainedObject( NotificationObserver( @@ -481,7 +481,7 @@ public class ICloudStore: CloudStorage { guard let `self` = self, let observer = observer, - let dataStack = (note as NSNotification).userInfo?[UserInfoKeyDataStack] as? DataStack + let dataStack = note.userInfo?[String(DataStack.self)] as? DataStack where self.dataStack === dataStack else { return @@ -497,16 +497,17 @@ public class ICloudStore: CloudStorage { // MARK: - Notification Keys - -private let ICloudUbiquitousStoreWillFinishInitialImportNotification = "ICloudUbiquitousStoreWillFinishInitialImportNotification" -private let ICloudUbiquitousStoreDidFinishInitialImportNotification = "ICloudUbiquitousStoreDidFinishInitialImportNotification" -private let ICloudUbiquitousStoreWillAddAccountNotification = "ICloudUbiquitousStoreWillAddAccountNotification" -private let ICloudUbiquitousStoreDidAddAccountNotification = "ICloudUbiquitousStoreDidAddAccountNotification" -private let ICloudUbiquitousStoreWillRemoveAccountNotification = "ICloudUbiquitousStoreWillRemoveAccountNotification" -private let ICloudUbiquitousStoreDidRemoveAccountNotification = "ICloudUbiquitousStoreDidRemoveAccountNotification" -private let ICloudUbiquitousStoreWillRemoveContentNotification = "ICloudUbiquitousStoreWillRemoveContentNotification" -private let ICloudUbiquitousStoreDidRemoveContentNotification = "ICloudUbiquitousStoreDidRemoveContentNotification" - -private let UserInfoKeyDataStack = "UserInfoKeyDataStack" + +private extension Notification.Name { + + private static let iCloudUbiquitousStoreWillFinishInitialImport = Notification.Name(rawValue: "iCloudUbiquitousStoreWillFinishInitialImport") + private static let iCloudUbiquitousStoreDidFinishInitialImport = Notification.Name(rawValue: "iCloudUbiquitousStoreDidFinishInitialImport") + private static let iCloudUbiquitousStoreWillAddAccount = Notification.Name(rawValue: "iCloudUbiquitousStoreWillAddAccount") + private static let iCloudUbiquitousStoreDidAddAccount = Notification.Name(rawValue: "iCloudUbiquitousStoreDidAddAccount") + private static let iCloudUbiquitousStoreWillRemoveAccount = Notification.Name(rawValue: "iCloudUbiquitousStoreWillRemoveAccount") + private static let iCloudUbiquitousStoreDidRemoveAccount = Notification.Name(rawValue: "iCloudUbiquitousStoreDidRemoveAccount") + private static let iCloudUbiquitousStoreWillRemoveContent = Notification.Name(rawValue: "iCloudUbiquitousStoreWillRemoveContent") + private static let iCloudUbiquitousStoreDidRemoveContent = Notification.Name(rawValue: "iCloudUbiquitousStoreDidRemoveContent") +} #endif diff --git a/Sources/Setup/StorageInterfaces/LegacySQLiteStore.swift b/Sources/Setup/StorageInterfaces/LegacySQLiteStore.swift index bc2a8f5..6504aaf 100644 --- a/Sources/Setup/StorageInterfaces/LegacySQLiteStore.swift +++ b/Sources/Setup/StorageInterfaces/LegacySQLiteStore.swift @@ -170,7 +170,7 @@ public final class LegacySQLiteStore: LocalStorage, DefaultInitializableStore { // TODO: check if attached to persistent store let fileURL = self.fileURL - try cs_autoreleasepool { + try autoreleasepool { let journalUpdatingCoordinator = NSPersistentStoreCoordinator(managedObjectModel: soureModel) let store = try journalUpdatingCoordinator.addPersistentStore( @@ -190,7 +190,7 @@ public final class LegacySQLiteStore: LocalStorage, DefaultInitializableStore { internal static let defaultRootDirectory: URL = { #if os(tvOS) - let systemDirectorySearchPath = NSSearchPathDirectory.CachesDirectory + let systemDirectorySearchPath = FileManager.SearchPathDirectory.cachesDirectory #else let systemDirectorySearchPath = FileManager.SearchPathDirectory.applicationSupportDirectory #endif diff --git a/Sources/Setup/StorageInterfaces/SQLiteStore.swift b/Sources/Setup/StorageInterfaces/SQLiteStore.swift index 81bb372..02541b3 100644 --- a/Sources/Setup/StorageInterfaces/SQLiteStore.swift +++ b/Sources/Setup/StorageInterfaces/SQLiteStore.swift @@ -167,7 +167,7 @@ public final class SQLiteStore: LocalStorage, DefaultInitializableStore { // TODO: check if attached to persistent store let fileURL = self.fileURL - try cs_autoreleasepool { + try autoreleasepool { let journalUpdatingCoordinator = NSPersistentStoreCoordinator(managedObjectModel: soureModel) let store = try journalUpdatingCoordinator.addPersistentStore( @@ -187,7 +187,7 @@ public final class SQLiteStore: LocalStorage, DefaultInitializableStore { internal static let defaultRootDirectory: URL = { #if os(tvOS) - let systemDirectorySearchPath = NSSearchPathDirectory.CachesDirectory + let systemDirectorySearchPath = FileManager.SearchPathDirectory.cachesDirectory #else let systemDirectorySearchPath = FileManager.SearchPathDirectory.applicationSupportDirectory #endif diff --git a/Sources/Transactions/AsynchronousDataTransaction.swift b/Sources/Transactions/AsynchronousDataTransaction.swift index 4f2afdd..a634030 100644 --- a/Sources/Transactions/AsynchronousDataTransaction.swift +++ b/Sources/Transactions/AsynchronousDataTransaction.swift @@ -101,7 +101,7 @@ public final class AsynchronousDataTransaction: BaseDataTransaction { CoreStore.assert( !self.isCommitted, - "Attempted to create an entity of type \(cs_typeName(T)) from an already committed \(cs_typeName(self))." + "Attempted to create an entity of type \(cs_typeName(T.self)) from an already committed \(cs_typeName(self))." ) return super.create(into) @@ -113,7 +113,6 @@ public final class AsynchronousDataTransaction: BaseDataTransaction { - parameter object: the `NSManagedObject` type to be edited - returns: an editable proxy for the specified `NSManagedObject`. */ - @warn_unused_result public override func edit(_ object: T?) -> T? { CoreStore.assert( @@ -131,12 +130,11 @@ public final class AsynchronousDataTransaction: BaseDataTransaction { - parameter objectID: the `NSManagedObjectID` for the object to be edited - returns: an editable proxy for the specified `NSManagedObject`. */ - @warn_unused_result public override func edit(_ into: Into, _ objectID: NSManagedObjectID) -> T? { CoreStore.assert( !self.isCommitted, - "Attempted to update an entity of type \(cs_typeName(T)) from an already committed \(cs_typeName(self))." + "Attempted to update an entity of type \(cs_typeName(T.self)) from an already committed \(cs_typeName(self))." ) return super.edit(into, objectID) diff --git a/Sources/Transactions/BaseDataTransaction.swift b/Sources/Transactions/BaseDataTransaction.swift index 13f412b..651f58d 100644 --- a/Sources/Transactions/BaseDataTransaction.swift +++ b/Sources/Transactions/BaseDataTransaction.swift @@ -57,7 +57,7 @@ public /*abstract*/ class BaseDataTransaction { CoreStore.assert( self.isRunningInAllowedQueue(), - "Attempted to create an entity of type \(cs_typeName(T)) outside its designated queue." + "Attempted to create an entity of type \(cs_typeName(T.self)) outside its designated queue." ) let context = self.context @@ -118,7 +118,6 @@ public /*abstract*/ class BaseDataTransaction { - parameter object: the `NSManagedObject` type to be edited - returns: an editable proxy for the specified `NSManagedObject`. */ - @warn_unused_result public func edit(_ object: T?) -> T? { CoreStore.assert( @@ -139,17 +138,16 @@ public /*abstract*/ class BaseDataTransaction { - parameter objectID: the `NSManagedObjectID` for the object to be edited - returns: an editable proxy for the specified `NSManagedObject`. */ - @warn_unused_result public func edit(_ into: Into, _ objectID: NSManagedObjectID) -> T? { CoreStore.assert( self.isRunningInAllowedQueue(), - "Attempted to update an entity of type \(cs_typeName(T)) outside its designated queue." + "Attempted to update an entity of type \(cs_typeName(T.self)) outside its designated queue." ) CoreStore.assert( into.inferStoreIfPossible || (into.configuration ?? Into.defaultConfigurationName) == objectID.persistentStore?.configurationName, - "Attempted to update an entity of type \(cs_typeName(T)) but the specified persistent store do not match the `NSManagedObjectID`." + "Attempted to update an entity of type \(cs_typeName(T.self)) but the specified persistent store do not match the `NSManagedObjectID`." ) return self.fetchExisting(objectID) as? T } @@ -221,7 +219,6 @@ public /*abstract*/ class BaseDataTransaction { - returns: a `Set` of pending `NSManagedObject`s that were inserted to the transaction. */ - @warn_unused_result public func insertedObjects() -> Set { CoreStore.assert( @@ -242,7 +239,6 @@ public /*abstract*/ class BaseDataTransaction { - parameter entity: the `NSManagedObject` subclass to filter - returns: a `Set` of pending `NSManagedObject`s of the specified type that were inserted to the transaction. */ - @warn_unused_result public func insertedObjects(_ entity: T.Type) -> Set { CoreStore.assert( @@ -262,7 +258,6 @@ public /*abstract*/ class BaseDataTransaction { - returns: a `Set` of pending `NSManagedObjectID`s that were inserted to the transaction. */ - @warn_unused_result public func insertedObjectIDs() -> Set { CoreStore.assert( @@ -283,7 +278,6 @@ public /*abstract*/ class BaseDataTransaction { - parameter entity: the `NSManagedObject` subclass to filter - returns: a `Set` of pending `NSManagedObjectID`s of the specified type that were inserted to the transaction. */ - @warn_unused_result public func insertedObjectIDs(_ entity: T.Type) -> Set { CoreStore.assert( @@ -303,7 +297,6 @@ public /*abstract*/ class BaseDataTransaction { - returns: a `Set` of pending `NSManagedObject`s that were updated to the transaction. */ - @warn_unused_result public func updatedObjects() -> Set { CoreStore.assert( @@ -324,7 +317,6 @@ public /*abstract*/ class BaseDataTransaction { - parameter entity: the `NSManagedObject` subclass to filter - returns: a `Set` of pending `NSManagedObject`s of the specified type that were updated in the transaction. */ - @warn_unused_result public func updatedObjects(_ entity: T.Type) -> Set { CoreStore.assert( @@ -344,7 +336,6 @@ public /*abstract*/ class BaseDataTransaction { - returns: a `Set` of pending `NSManagedObjectID`s that were updated in the transaction. */ - @warn_unused_result public func updatedObjectIDs() -> Set { CoreStore.assert( @@ -365,7 +356,6 @@ public /*abstract*/ class BaseDataTransaction { - parameter entity: the `NSManagedObject` subclass to filter - returns: a `Set` of pending `NSManagedObjectID`s of the specified type that were updated in the transaction. */ - @warn_unused_result public func updatedObjectIDs(_ entity: T.Type) -> Set { CoreStore.assert( @@ -385,7 +375,6 @@ public /*abstract*/ class BaseDataTransaction { - returns: a `Set` of pending `NSManagedObject`s that were deleted from the transaction. */ - @warn_unused_result public func deletedObjects() -> Set { CoreStore.assert( @@ -406,7 +395,6 @@ public /*abstract*/ class BaseDataTransaction { - parameter entity: the `NSManagedObject` subclass to filter - returns: a `Set` of pending `NSManagedObject`s of the specified type that were deleted from the transaction. */ - @warn_unused_result public func deletedObjects(_ entity: T.Type) -> Set { CoreStore.assert( @@ -427,7 +415,6 @@ public /*abstract*/ class BaseDataTransaction { - parameter entity: the `NSManagedObject` subclass to filter - returns: a `Set` of pending `NSManagedObjectID`s of the specified type that were deleted from the transaction. */ - @warn_unused_result public func deletedObjectIDs() -> Set { CoreStore.assert( @@ -448,7 +435,6 @@ public /*abstract*/ class BaseDataTransaction { - parameter entity: the `NSManagedObject` subclass to filter - returns: a `Set` of pending `NSManagedObjectID`s of the specified type that were deleted from the transaction. */ - @warn_unused_result public func deletedObjectIDs(_ entity: T.Type) -> Set { CoreStore.assert( @@ -468,7 +454,7 @@ public /*abstract*/ class BaseDataTransaction { internal let context: NSManagedObjectContext internal let transactionQueue: GCDQueue - internal let childTransactionQueue: GCDQueue = .createSerial("com.corestore.datastack.childtransactionqueue") + internal let childTransactionQueue = GCDQueue.createSerial("com.corestore.datastack.childtransactionqueue") internal let supportsUndo: Bool internal let bypassesQueueing: Bool diff --git a/Sources/Transactions/CoreStore+Transaction.swift b/Sources/Transactions/CoreStore+Transaction.swift index c3efd29..1eef738 100644 --- a/Sources/Transactions/CoreStore+Transaction.swift +++ b/Sources/Transactions/CoreStore+Transaction.swift @@ -57,7 +57,6 @@ public extension CoreStore { - prameter supportsUndo: `undo()`, `redo()`, and `rollback()` methods are only available when this parameter is `true`, otherwise those method will raise an exception. Defaults to `false`. Note that turning on Undo support may heavily impact performance especially on iOS or watchOS where memory is limited. - returns: a `UnsafeDataTransaction` instance where creates, updates, and deletes can be made. */ - @warn_unused_result public static func beginUnsafe(supportsUndo: Bool = false) -> UnsafeDataTransaction { return self.defaultStack.beginUnsafe(supportsUndo: supportsUndo) diff --git a/Sources/Transactions/DataStack+Transaction.swift b/Sources/Transactions/DataStack+Transaction.swift index a73476c..c7c0789 100644 --- a/Sources/Transactions/DataStack+Transaction.swift +++ b/Sources/Transactions/DataStack+Transaction.swift @@ -67,7 +67,6 @@ public extension DataStack { - prameter supportsUndo: `undo()`, `redo()`, and `rollback()` methods are only available when this parameter is `true`, otherwise those method will raise an exception. Defaults to `false`. Note that turning on Undo support may heavily impact performance especially on iOS or watchOS where memory is limited. - returns: a `UnsafeDataTransaction` instance where creates, updates, and deletes can be made. */ - @warn_unused_result public func beginUnsafe(supportsUndo: Bool = false) -> UnsafeDataTransaction { return UnsafeDataTransaction( diff --git a/Sources/Transactions/Into.swift b/Sources/Transactions/Into.swift index 90eaa2c..61a4a87 100644 --- a/Sources/Transactions/Into.swift +++ b/Sources/Transactions/Into.swift @@ -32,7 +32,7 @@ import CoreData /** An `Into` clause contains the destination entity and destination persistent store for a `create(...)` method. A common usage is to just indicate the entity: ``` - let person = transaction.create(Into(MyPersonEntity)) + let person = transaction.create(Into()) ``` For cases where multiple `NSPersistentStore`s contain the same entity, the destination configuration's name needs to be specified as well: ``` @@ -66,7 +66,7 @@ public struct Into: Hashable { /** Initializes an `Into` clause with the specified entity type. ``` - let person = transaction.create(Into(MyPersonEntity)) + let person = transaction.create(Into(MyPersonEntity.self)) ``` - parameter entity: the `NSManagedObject` type to be created @@ -79,7 +79,7 @@ public struct Into: Hashable { /** Initializes an `Into` clause with the specified entity class. ``` - let person = transaction.create(Into(MyPersonEntity)) + let person = transaction.create(Into(MyPersonEntity.self)) ``` - parameter entityClass: the `NSManagedObject` class type to be created @@ -88,7 +88,7 @@ public struct Into: Hashable { CoreStore.assert( entityClass is T.Type, - "Attempted to create generic type \(cs_typeName(Into)) with entity class \(cs_typeName(entityClass))" + "Attempted to create generic type \(cs_typeName(Into.self)) with entity class \(cs_typeName(entityClass))" ) self.init(entityClass: entityClass, configuration: nil, inferStoreIfPossible: true) } @@ -133,7 +133,7 @@ public struct Into: Hashable { CoreStore.assert( entityClass is T.Type, - "Attempted to create generic type \(cs_typeName(Into)) with entity class \(cs_typeName(entityClass))" + "Attempted to create generic type \(cs_typeName(Into.self)) with entity class \(cs_typeName(entityClass))" ) self.init(entityClass: entityClass, configuration: configuration, inferStoreIfPossible: false) } @@ -181,7 +181,6 @@ public struct Into: Hashable { // MARK: - Into: Equatable -@warn_unused_result public func == (lhs: Into, rhs: Into) -> Bool { return lhs.entityClass == rhs.entityClass @@ -189,7 +188,6 @@ public func == (lhs: Into, rhs: Into< && lhs.inferStoreIfPossible == rhs.inferStoreIfPossible } -@warn_unused_result public func != (lhs: Into, rhs: Into) -> Bool { return lhs.entityClass == rhs.entityClass diff --git a/Sources/Transactions/SaveResult.swift b/Sources/Transactions/SaveResult.swift index d40b2d0..338593c 100644 --- a/Sources/Transactions/SaveResult.swift +++ b/Sources/Transactions/SaveResult.swift @@ -49,9 +49,9 @@ import Foundation // ... let result = transaction.commit() switch result { - case .Success(let hasChanges): + case .success(let hasChanges): // hasChanges indicates if there were changes or not - case .Failure(let error): + case .failure(let error): // error is a CoreStoreError enum value } } @@ -60,12 +60,12 @@ import Foundation public enum SaveResult: Hashable { /** - `SaveResult.Success` indicates that the `commit()` for the transaction succeeded, either because the save succeeded or because there were no changes to save. The associated value `hasChanges` indicates if there were saved changes or not. + `SaveResult.success` indicates that the `commit()` for the transaction succeeded, either because the save succeeded or because there were no changes to save. The associated value `hasChanges` indicates if there were saved changes or not. */ case success(hasChanges: Bool) /** - `SaveResult.Failure` indicates that the `commit()` for the transaction failed. The associated object for this value is a `CoreStoreError` enum value. + `SaveResult.failure` indicates that the `commit()` for the transaction failed. The associated object for this value is a `CoreStoreError` enum value. */ case failure(CoreStoreError) @@ -116,7 +116,6 @@ extension SaveResult: Boolean { // MARK: - SaveResult: Equatable -@warn_unused_result public func == (lhs: SaveResult, rhs: SaveResult) -> Bool { switch (lhs, rhs) { diff --git a/Sources/Transactions/SynchronousDataTransaction.swift b/Sources/Transactions/SynchronousDataTransaction.swift index 9bdce0d..192fcda 100644 --- a/Sources/Transactions/SynchronousDataTransaction.swift +++ b/Sources/Transactions/SynchronousDataTransaction.swift @@ -96,7 +96,7 @@ public final class SynchronousDataTransaction: BaseDataTransaction { CoreStore.assert( !self.isCommitted, - "Attempted to create an entity of type \(cs_typeName(T)) from an already committed \(cs_typeName(self))." + "Attempted to create an entity of type \(cs_typeName(T.self)) from an already committed \(cs_typeName(self))." ) return super.create(into) @@ -108,7 +108,6 @@ public final class SynchronousDataTransaction: BaseDataTransaction { - parameter object: the `NSManagedObject` type to be edited - returns: an editable proxy for the specified `NSManagedObject`. */ - @warn_unused_result public override func edit(_ object: T?) -> T? { CoreStore.assert( @@ -126,12 +125,11 @@ public final class SynchronousDataTransaction: BaseDataTransaction { - parameter objectID: the `NSManagedObjectID` for the object to be edited - returns: an editable proxy for the specified `NSManagedObject`. */ - @warn_unused_result public override func edit(_ into: Into, _ objectID: NSManagedObjectID) -> T? { CoreStore.assert( !self.isCommitted, - "Attempted to update an entity of type \(cs_typeName(T)) from an already committed \(cs_typeName(self))." + "Attempted to update an entity of type \(cs_typeName(T.self)) from an already committed \(cs_typeName(self))." ) return super.edit(into, objectID) diff --git a/Sources/Transactions/UnsafeDataTransaction.swift b/Sources/Transactions/UnsafeDataTransaction.swift index b9de6f0..56256f9 100644 --- a/Sources/Transactions/UnsafeDataTransaction.swift +++ b/Sources/Transactions/UnsafeDataTransaction.swift @@ -129,7 +129,6 @@ public final class UnsafeDataTransaction: BaseDataTransaction { - prameter supportsUndo: `undo()`, `redo()`, and `rollback()` methods are only available when this parameter is `true`, otherwise those method will raise an exception. Defaults to `false`. Note that turning on Undo support may heavily impact performance especially on iOS or watchOS where memory is limited. - returns: an `UnsafeDataTransaction` instance where creates, updates, and deletes can be made. */ - @warn_unused_result public func beginUnsafe(supportsUndo: Bool = false) -> UnsafeDataTransaction { return UnsafeDataTransaction(