mirror of
https://github.com/JohnEstropia/CoreStore.git
synced 2026-05-28 02:19:35 +02:00
tidy up
This commit is contained in:
@@ -406,12 +406,12 @@ extension Int8: SelectValueResultType {
|
|||||||
|
|
||||||
public static func fromResultObject(result: AnyObject) -> Int8? {
|
public static func fromResultObject(result: AnyObject) -> Int8? {
|
||||||
|
|
||||||
if let value = (result as? NSNumber)?.longLongValue {
|
guard let value = (result as? NSNumber)?.longLongValue else {
|
||||||
|
|
||||||
return numericCast(value) as Int8
|
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
return numericCast(value) as Int8
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -426,12 +426,12 @@ extension Int16: SelectValueResultType {
|
|||||||
|
|
||||||
public static func fromResultObject(result: AnyObject) -> Int16? {
|
public static func fromResultObject(result: AnyObject) -> Int16? {
|
||||||
|
|
||||||
if let value = (result as? NSNumber)?.longLongValue {
|
guard let value = (result as? NSNumber)?.longLongValue else {
|
||||||
|
|
||||||
return numericCast(value) as Int16
|
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
return numericCast(value) as Int16
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -446,12 +446,12 @@ extension Int32: SelectValueResultType {
|
|||||||
|
|
||||||
public static func fromResultObject(result: AnyObject) -> Int32? {
|
public static func fromResultObject(result: AnyObject) -> Int32? {
|
||||||
|
|
||||||
if let value = (result as? NSNumber)?.longLongValue {
|
guard let value = (result as? NSNumber)?.longLongValue else {
|
||||||
|
|
||||||
return numericCast(value) as Int32
|
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
return numericCast(value) as Int32
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -482,12 +482,12 @@ extension Int: SelectValueResultType {
|
|||||||
|
|
||||||
public static func fromResultObject(result: AnyObject) -> Int? {
|
public static func fromResultObject(result: AnyObject) -> Int? {
|
||||||
|
|
||||||
if let value = (result as? NSNumber)?.longLongValue {
|
guard let value = (result as? NSNumber)?.longLongValue else {
|
||||||
|
|
||||||
return numericCast(value) as Int
|
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
return numericCast(value) as Int
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -37,12 +37,13 @@ internal final class MigrationManager: NSMigrationManager, NSProgressReporting {
|
|||||||
|
|
||||||
super.didChangeValueForKey(key)
|
super.didChangeValueForKey(key)
|
||||||
|
|
||||||
if key == "migrationProgress" {
|
guard key == "migrationProgress" else {
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
let progress = self.progress
|
let progress = self.progress
|
||||||
progress.completedUnitCount = Int64(Float(progress.totalUnitCount) * self.migrationProgress)
|
progress.completedUnitCount = Int64(Float(progress.totalUnitCount) * self.migrationProgress)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// MARK: NSMigrationManager
|
// MARK: NSMigrationManager
|
||||||
|
|||||||
@@ -17,22 +17,10 @@ internal extension NSFileManager {
|
|||||||
|
|
||||||
internal func removeSQLiteStoreAtURL(fileURL: NSURL) {
|
internal func removeSQLiteStoreAtURL(fileURL: NSURL) {
|
||||||
|
|
||||||
do {
|
_ = try? self.removeItemAtURL(fileURL)
|
||||||
|
|
||||||
try self.removeItemAtURL(fileURL)
|
let filePath = fileURL.path!
|
||||||
}
|
_ = try? self.removeItemAtPath(filePath.stringByAppendingString("-shm"))
|
||||||
catch _ { }
|
_ = try? self.removeItemAtPath(filePath.stringByAppendingString("-wal"))
|
||||||
|
|
||||||
do {
|
|
||||||
|
|
||||||
try self.removeItemAtPath(fileURL.path!.stringByAppendingString("-shm"))
|
|
||||||
}
|
|
||||||
catch _ { }
|
|
||||||
|
|
||||||
do {
|
|
||||||
|
|
||||||
try self.removeItemAtPath(fileURL.path!.stringByAppendingString("-wal"))
|
|
||||||
}
|
|
||||||
catch _ { }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -61,15 +61,15 @@ internal extension NSManagedObjectContext {
|
|||||||
|
|
||||||
internal func entityDescriptionForEntityClass(entity: AnyClass) -> NSEntityDescription? {
|
internal func entityDescriptionForEntityClass(entity: AnyClass) -> NSEntityDescription? {
|
||||||
|
|
||||||
if let entityName = self.parentStack?.entityNameForEntityClass(entity) {
|
guard let entityName = self.parentStack?.entityNameForEntityClass(entity) else {
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
return NSEntityDescription.entityForName(
|
return NSEntityDescription.entityForName(
|
||||||
entityName,
|
entityName,
|
||||||
inManagedObjectContext: self
|
inManagedObjectContext: self
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
internal func setupForCoreStoreWithContextName(contextName: String) {
|
internal func setupForCoreStoreWithContextName(contextName: String) {
|
||||||
|
|
||||||
@@ -83,7 +83,7 @@ internal extension NSManagedObjectContext {
|
|||||||
let context = note.object as! NSManagedObjectContext
|
let context = note.object as! NSManagedObjectContext
|
||||||
let insertedObjects = context.insertedObjects
|
let insertedObjects = context.insertedObjects
|
||||||
let numberOfInsertedObjects = insertedObjects.count
|
let numberOfInsertedObjects = insertedObjects.count
|
||||||
if numberOfInsertedObjects <= 0 {
|
guard numberOfInsertedObjects > 0 else {
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -91,7 +91,6 @@ internal extension NSManagedObjectContext {
|
|||||||
do {
|
do {
|
||||||
|
|
||||||
try context.obtainPermanentIDsForObjects(Array(insertedObjects))
|
try context.obtainPermanentIDsForObjects(Array(insertedObjects))
|
||||||
return
|
|
||||||
}
|
}
|
||||||
catch {
|
catch {
|
||||||
|
|
||||||
|
|||||||
@@ -37,24 +37,17 @@ internal extension NSManagedObjectContext {
|
|||||||
|
|
||||||
if object.objectID.temporaryID {
|
if object.objectID.temporaryID {
|
||||||
|
|
||||||
var objectIDError: NSError?
|
|
||||||
let didSucceed = withExtendedLifetime(self) { (context: NSManagedObjectContext) -> Bool in
|
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
|
||||||
|
try withExtendedLifetime(self) { (context: NSManagedObjectContext) -> Void in
|
||||||
|
|
||||||
try context.obtainPermanentIDsForObjects([object])
|
try context.obtainPermanentIDsForObjects([object])
|
||||||
return true
|
}
|
||||||
}
|
}
|
||||||
catch {
|
catch {
|
||||||
|
|
||||||
objectIDError = error as NSError
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if didSucceed != true {
|
|
||||||
|
|
||||||
CoreStore.handleError(
|
CoreStore.handleError(
|
||||||
objectIDError ?? NSError(coreStoreErrorCode: .UnknownError),
|
error as NSError,
|
||||||
"Failed to obtain permanent ID for object."
|
"Failed to obtain permanent ID for object."
|
||||||
)
|
)
|
||||||
return nil
|
return nil
|
||||||
@@ -76,7 +69,6 @@ internal extension NSManagedObjectContext {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
internal func fetchOne<T: NSManagedObject>(from: From<T>, _ fetchClauses: FetchClause...) -> T? {
|
internal func fetchOne<T: NSManagedObject>(from: From<T>, _ fetchClauses: FetchClause...) -> T? {
|
||||||
|
|
||||||
return self.fetchOne(from, fetchClauses)
|
return self.fetchOne(from, fetchClauses)
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ internal extension NSManagedObjectContext {
|
|||||||
}
|
}
|
||||||
set {
|
set {
|
||||||
|
|
||||||
if self.parentContext != nil {
|
guard self.parentContext == nil else {
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ internal extension NSManagedObjectContext {
|
|||||||
|
|
||||||
self.performBlockAndWait { [unowned self] () -> Void in
|
self.performBlockAndWait { [unowned self] () -> Void in
|
||||||
|
|
||||||
if !self.hasChanges {
|
guard self.hasChanges else {
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -115,7 +115,7 @@ internal extension NSManagedObjectContext {
|
|||||||
|
|
||||||
self.performBlock { () -> Void in
|
self.performBlock { () -> Void in
|
||||||
|
|
||||||
if !self.hasChanges {
|
guard self.hasChanges else {
|
||||||
|
|
||||||
if let completion = completion {
|
if let completion = completion {
|
||||||
|
|
||||||
|
|||||||
@@ -192,8 +192,10 @@ internal extension NSManagedObjectModel {
|
|||||||
|
|
||||||
@nonobjc internal subscript(metadata: [String: AnyObject]) -> NSManagedObjectModel? {
|
@nonobjc internal subscript(metadata: [String: AnyObject]) -> NSManagedObjectModel? {
|
||||||
|
|
||||||
if let modelHashes = metadata[NSStoreModelVersionHashesKey] as? [String : NSData] {
|
guard let modelHashes = metadata[NSStoreModelVersionHashesKey] as? [String : NSData] else {
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
for modelVersion in self.modelVersions ?? [] {
|
for modelVersion in self.modelVersions ?? [] {
|
||||||
|
|
||||||
if let versionModel = self[modelVersion] where modelHashes == versionModel.entityVersionHashesByName {
|
if let versionModel = self[modelVersion] where modelHashes == versionModel.entityVersionHashesByName {
|
||||||
@@ -201,7 +203,6 @@ internal extension NSManagedObjectModel {
|
|||||||
return versionModel
|
return versionModel
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -117,15 +117,8 @@ public extension DataStack {
|
|||||||
let coordinator = self.coordinator;
|
let coordinator = self.coordinator;
|
||||||
if let store = coordinator.persistentStoreForURL(fileURL) {
|
if let store = coordinator.persistentStoreForURL(fileURL) {
|
||||||
|
|
||||||
if store.type == NSSQLiteStoreType
|
guard store.type == NSSQLiteStoreType
|
||||||
&& store.configurationName == (configuration ?? Into.defaultConfigurationName) {
|
&& store.configurationName == (configuration ?? Into.defaultConfigurationName) else {
|
||||||
|
|
||||||
GCDQueue.Main.async {
|
|
||||||
|
|
||||||
completion(PersistentStoreResult(store))
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
let error = NSError(coreStoreErrorCode: .DifferentPersistentStoreExistsAtURL)
|
let error = NSError(coreStoreErrorCode: .DifferentPersistentStoreExistsAtURL)
|
||||||
CoreStore.handleError(
|
CoreStore.handleError(
|
||||||
@@ -135,16 +128,19 @@ public extension DataStack {
|
|||||||
throw error
|
throw error
|
||||||
}
|
}
|
||||||
|
|
||||||
let fileManager = NSFileManager.defaultManager()
|
GCDQueue.Main.async {
|
||||||
do {
|
|
||||||
|
|
||||||
try fileManager.createDirectoryAtURL(
|
completion(PersistentStoreResult(store))
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
let fileManager = NSFileManager.defaultManager()
|
||||||
|
_ = try? fileManager.createDirectoryAtURL(
|
||||||
fileURL.URLByDeletingLastPathComponent!,
|
fileURL.URLByDeletingLastPathComponent!,
|
||||||
withIntermediateDirectories: true,
|
withIntermediateDirectories: true,
|
||||||
attributes: nil
|
attributes: nil
|
||||||
)
|
)
|
||||||
}
|
|
||||||
catch _ { }
|
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
|
||||||
|
|||||||
@@ -166,13 +166,11 @@ public struct MigrationChain: NilLiteralConvertible, StringLiteralConvertible, D
|
|||||||
var valid = true
|
var valid = true
|
||||||
for version in elements {
|
for version in elements {
|
||||||
|
|
||||||
if let lastVersion = lastVersion {
|
if let lastVersion = lastVersion,
|
||||||
|
let _ = versionTree.updateValue(version, forKey: lastVersion) {
|
||||||
if let _ = versionTree.updateValue(version, forKey: lastVersion) {
|
|
||||||
|
|
||||||
valid = false
|
valid = false
|
||||||
}
|
}
|
||||||
}
|
|
||||||
lastVersion = version
|
lastVersion = version
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -203,12 +201,12 @@ public struct MigrationChain: NilLiteralConvertible, StringLiteralConvertible, D
|
|||||||
|
|
||||||
internal func nextVersionFrom(version: String) -> String? {
|
internal func nextVersionFrom(version: String) -> String? {
|
||||||
|
|
||||||
if let nextVersion = self.versionTree[version] where nextVersion != version {
|
guard let nextVersion = self.versionTree[version] where nextVersion != version else {
|
||||||
|
|
||||||
return nextVersion
|
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
return nextVersion
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// MARK: Private
|
// MARK: Private
|
||||||
|
|||||||
@@ -321,10 +321,11 @@ public final class ListMonitor<T: NSManagedObject> {
|
|||||||
toObserver: observer,
|
toObserver: observer,
|
||||||
callback: { [weak observer] (monitor) -> Void in
|
callback: { [weak observer] (monitor) -> Void in
|
||||||
|
|
||||||
if let observer = observer {
|
guard let observer = observer else {
|
||||||
|
|
||||||
observer.listMonitorWillChange(monitor)
|
return
|
||||||
}
|
}
|
||||||
|
observer.listMonitorWillChange(monitor)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
self.registerChangeNotification(
|
self.registerChangeNotification(
|
||||||
@@ -333,10 +334,11 @@ public final class ListMonitor<T: NSManagedObject> {
|
|||||||
toObserver: observer,
|
toObserver: observer,
|
||||||
callback: { [weak observer] (monitor) -> Void in
|
callback: { [weak observer] (monitor) -> Void in
|
||||||
|
|
||||||
if let observer = observer {
|
guard let observer = observer else {
|
||||||
|
|
||||||
observer.listMonitorDidChange(monitor)
|
return
|
||||||
}
|
}
|
||||||
|
observer.listMonitorDidChange(monitor)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -367,10 +369,11 @@ public final class ListMonitor<T: NSManagedObject> {
|
|||||||
toObserver: observer,
|
toObserver: observer,
|
||||||
callback: { [weak observer] (monitor) -> Void in
|
callback: { [weak observer] (monitor) -> Void in
|
||||||
|
|
||||||
if let observer = observer {
|
guard let observer = observer else {
|
||||||
|
|
||||||
observer.listMonitorWillChange(monitor)
|
return
|
||||||
}
|
}
|
||||||
|
observer.listMonitorWillChange(monitor)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
self.registerChangeNotification(
|
self.registerChangeNotification(
|
||||||
@@ -379,10 +382,11 @@ public final class ListMonitor<T: NSManagedObject> {
|
|||||||
toObserver: observer,
|
toObserver: observer,
|
||||||
callback: { [weak observer] (monitor) -> Void in
|
callback: { [weak observer] (monitor) -> Void in
|
||||||
|
|
||||||
if let observer = observer {
|
guard let observer = observer else {
|
||||||
|
|
||||||
observer.listMonitorDidChange(monitor)
|
return
|
||||||
}
|
}
|
||||||
|
observer.listMonitorDidChange(monitor)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -392,15 +396,16 @@ public final class ListMonitor<T: NSManagedObject> {
|
|||||||
toObserver: observer,
|
toObserver: observer,
|
||||||
callback: { [weak observer] (monitor, object, indexPath, newIndexPath) -> Void in
|
callback: { [weak observer] (monitor, object, indexPath, newIndexPath) -> Void in
|
||||||
|
|
||||||
if let observer = observer {
|
guard let observer = observer else {
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
observer.listMonitor(
|
observer.listMonitor(
|
||||||
monitor,
|
monitor,
|
||||||
didInsertObject: object,
|
didInsertObject: object,
|
||||||
toIndexPath: newIndexPath!
|
toIndexPath: newIndexPath!
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
)
|
)
|
||||||
self.registerObjectNotification(
|
self.registerObjectNotification(
|
||||||
&NotificationKey.didDeleteObject,
|
&NotificationKey.didDeleteObject,
|
||||||
@@ -408,15 +413,16 @@ public final class ListMonitor<T: NSManagedObject> {
|
|||||||
toObserver: observer,
|
toObserver: observer,
|
||||||
callback: { [weak observer] (monitor, object, indexPath, newIndexPath) -> Void in
|
callback: { [weak observer] (monitor, object, indexPath, newIndexPath) -> Void in
|
||||||
|
|
||||||
if let observer = observer {
|
guard let observer = observer else {
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
observer.listMonitor(
|
observer.listMonitor(
|
||||||
monitor,
|
monitor,
|
||||||
didDeleteObject: object,
|
didDeleteObject: object,
|
||||||
fromIndexPath: indexPath!
|
fromIndexPath: indexPath!
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
)
|
)
|
||||||
self.registerObjectNotification(
|
self.registerObjectNotification(
|
||||||
&NotificationKey.didUpdateObject,
|
&NotificationKey.didUpdateObject,
|
||||||
@@ -424,15 +430,16 @@ public final class ListMonitor<T: NSManagedObject> {
|
|||||||
toObserver: observer,
|
toObserver: observer,
|
||||||
callback: { [weak observer] (monitor, object, indexPath, newIndexPath) -> Void in
|
callback: { [weak observer] (monitor, object, indexPath, newIndexPath) -> Void in
|
||||||
|
|
||||||
if let observer = observer {
|
guard let observer = observer else {
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
observer.listMonitor(
|
observer.listMonitor(
|
||||||
monitor,
|
monitor,
|
||||||
didUpdateObject: object,
|
didUpdateObject: object,
|
||||||
atIndexPath: indexPath!
|
atIndexPath: indexPath!
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
)
|
)
|
||||||
self.registerObjectNotification(
|
self.registerObjectNotification(
|
||||||
&NotificationKey.didMoveObject,
|
&NotificationKey.didMoveObject,
|
||||||
@@ -440,8 +447,10 @@ public final class ListMonitor<T: NSManagedObject> {
|
|||||||
toObserver: observer,
|
toObserver: observer,
|
||||||
callback: { [weak observer] (monitor, object, indexPath, newIndexPath) -> Void in
|
callback: { [weak observer] (monitor, object, indexPath, newIndexPath) -> Void in
|
||||||
|
|
||||||
if let observer = observer {
|
guard let observer = observer else {
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
observer.listMonitor(
|
observer.listMonitor(
|
||||||
monitor,
|
monitor,
|
||||||
didMoveObject: object,
|
didMoveObject: object,
|
||||||
@@ -449,7 +458,6 @@ public final class ListMonitor<T: NSManagedObject> {
|
|||||||
toIndexPath: newIndexPath!
|
toIndexPath: newIndexPath!
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -479,10 +487,11 @@ public final class ListMonitor<T: NSManagedObject> {
|
|||||||
toObserver: observer,
|
toObserver: observer,
|
||||||
callback: { [weak observer] (monitor) -> Void in
|
callback: { [weak observer] (monitor) -> Void in
|
||||||
|
|
||||||
if let observer = observer {
|
guard let observer = observer else {
|
||||||
|
|
||||||
observer.listMonitorWillChange(monitor)
|
return
|
||||||
}
|
}
|
||||||
|
observer.listMonitorWillChange(monitor)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
self.registerChangeNotification(
|
self.registerChangeNotification(
|
||||||
@@ -491,10 +500,11 @@ public final class ListMonitor<T: NSManagedObject> {
|
|||||||
toObserver: observer,
|
toObserver: observer,
|
||||||
callback: { [weak observer] (monitor) -> Void in
|
callback: { [weak observer] (monitor) -> Void in
|
||||||
|
|
||||||
if let observer = observer {
|
guard let observer = observer else {
|
||||||
|
|
||||||
observer.listMonitorDidChange(monitor)
|
return
|
||||||
}
|
}
|
||||||
|
observer.listMonitorDidChange(monitor)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -504,15 +514,16 @@ public final class ListMonitor<T: NSManagedObject> {
|
|||||||
toObserver: observer,
|
toObserver: observer,
|
||||||
callback: { [weak observer] (monitor, object, indexPath, newIndexPath) -> Void in
|
callback: { [weak observer] (monitor, object, indexPath, newIndexPath) -> Void in
|
||||||
|
|
||||||
if let observer = observer {
|
guard let observer = observer else {
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
observer.listMonitor(
|
observer.listMonitor(
|
||||||
monitor,
|
monitor,
|
||||||
didInsertObject: object,
|
didInsertObject: object,
|
||||||
toIndexPath: newIndexPath!
|
toIndexPath: newIndexPath!
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
)
|
)
|
||||||
self.registerObjectNotification(
|
self.registerObjectNotification(
|
||||||
&NotificationKey.didDeleteObject,
|
&NotificationKey.didDeleteObject,
|
||||||
@@ -520,15 +531,16 @@ public final class ListMonitor<T: NSManagedObject> {
|
|||||||
toObserver: observer,
|
toObserver: observer,
|
||||||
callback: { [weak observer] (monitor, object, indexPath, newIndexPath) -> Void in
|
callback: { [weak observer] (monitor, object, indexPath, newIndexPath) -> Void in
|
||||||
|
|
||||||
if let observer = observer {
|
guard let observer = observer else {
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
observer.listMonitor(
|
observer.listMonitor(
|
||||||
monitor,
|
monitor,
|
||||||
didDeleteObject: object,
|
didDeleteObject: object,
|
||||||
fromIndexPath: indexPath!
|
fromIndexPath: indexPath!
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
)
|
)
|
||||||
self.registerObjectNotification(
|
self.registerObjectNotification(
|
||||||
&NotificationKey.didUpdateObject,
|
&NotificationKey.didUpdateObject,
|
||||||
@@ -536,15 +548,16 @@ public final class ListMonitor<T: NSManagedObject> {
|
|||||||
toObserver: observer,
|
toObserver: observer,
|
||||||
callback: { [weak observer] (monitor, object, indexPath, newIndexPath) -> Void in
|
callback: { [weak observer] (monitor, object, indexPath, newIndexPath) -> Void in
|
||||||
|
|
||||||
if let observer = observer {
|
guard let observer = observer else {
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
observer.listMonitor(
|
observer.listMonitor(
|
||||||
monitor,
|
monitor,
|
||||||
didUpdateObject: object,
|
didUpdateObject: object,
|
||||||
atIndexPath: indexPath!
|
atIndexPath: indexPath!
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
)
|
)
|
||||||
self.registerObjectNotification(
|
self.registerObjectNotification(
|
||||||
&NotificationKey.didMoveObject,
|
&NotificationKey.didMoveObject,
|
||||||
@@ -552,8 +565,10 @@ public final class ListMonitor<T: NSManagedObject> {
|
|||||||
toObserver: observer,
|
toObserver: observer,
|
||||||
callback: { [weak observer] (monitor, object, indexPath, newIndexPath) -> Void in
|
callback: { [weak observer] (monitor, object, indexPath, newIndexPath) -> Void in
|
||||||
|
|
||||||
if let observer = observer {
|
guard let observer = observer else {
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
observer.listMonitor(
|
observer.listMonitor(
|
||||||
monitor,
|
monitor,
|
||||||
didMoveObject: object,
|
didMoveObject: object,
|
||||||
@@ -561,7 +576,6 @@ public final class ListMonitor<T: NSManagedObject> {
|
|||||||
toIndexPath: newIndexPath!
|
toIndexPath: newIndexPath!
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
self.registerSectionNotification(
|
self.registerSectionNotification(
|
||||||
@@ -570,15 +584,16 @@ public final class ListMonitor<T: NSManagedObject> {
|
|||||||
toObserver: observer,
|
toObserver: observer,
|
||||||
callback: { [weak observer] (monitor, sectionInfo, sectionIndex) -> Void in
|
callback: { [weak observer] (monitor, sectionInfo, sectionIndex) -> Void in
|
||||||
|
|
||||||
if let observer = observer {
|
guard let observer = observer else {
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
observer.listMonitor(
|
observer.listMonitor(
|
||||||
monitor,
|
monitor,
|
||||||
didInsertSection: sectionInfo,
|
didInsertSection: sectionInfo,
|
||||||
toSectionIndex: sectionIndex
|
toSectionIndex: sectionIndex
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
)
|
)
|
||||||
self.registerSectionNotification(
|
self.registerSectionNotification(
|
||||||
&NotificationKey.didDeleteSection,
|
&NotificationKey.didDeleteSection,
|
||||||
@@ -586,15 +601,16 @@ public final class ListMonitor<T: NSManagedObject> {
|
|||||||
toObserver: observer,
|
toObserver: observer,
|
||||||
callback: { [weak observer] (monitor, sectionInfo, sectionIndex) -> Void in
|
callback: { [weak observer] (monitor, sectionInfo, sectionIndex) -> Void in
|
||||||
|
|
||||||
if let observer = observer {
|
guard let observer = observer else {
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
observer.listMonitor(
|
observer.listMonitor(
|
||||||
monitor,
|
monitor,
|
||||||
didDeleteSection: sectionInfo,
|
didDeleteSection: sectionInfo,
|
||||||
fromSectionIndex: sectionIndex
|
fromSectionIndex: sectionIndex
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -686,10 +702,11 @@ public final class ListMonitor<T: NSManagedObject> {
|
|||||||
object: self,
|
object: self,
|
||||||
closure: { [weak self] (note) -> Void in
|
closure: { [weak self] (note) -> Void in
|
||||||
|
|
||||||
if let strongSelf = self {
|
guard let strongSelf = self else {
|
||||||
|
|
||||||
callback(monitor: strongSelf)
|
return
|
||||||
}
|
}
|
||||||
|
callback(monitor: strongSelf)
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
forKey: notificationKey,
|
forKey: notificationKey,
|
||||||
@@ -705,10 +722,12 @@ public final class ListMonitor<T: NSManagedObject> {
|
|||||||
object: self,
|
object: self,
|
||||||
closure: { [weak self] (note) -> Void in
|
closure: { [weak self] (note) -> Void in
|
||||||
|
|
||||||
if let strongSelf = self,
|
guard let strongSelf = self,
|
||||||
let userInfo = note.userInfo,
|
let userInfo = note.userInfo,
|
||||||
let object = userInfo[UserInfoKeyObject] as? T {
|
let object = userInfo[UserInfoKeyObject] as? T else {
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
callback(
|
callback(
|
||||||
monitor: strongSelf,
|
monitor: strongSelf,
|
||||||
object: object,
|
object: object,
|
||||||
@@ -716,7 +735,6 @@ public final class ListMonitor<T: NSManagedObject> {
|
|||||||
newIndexPath: userInfo[UserInfoKeyNewIndexPath] as? NSIndexPath
|
newIndexPath: userInfo[UserInfoKeyNewIndexPath] as? NSIndexPath
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
),
|
),
|
||||||
forKey: notificationKey,
|
forKey: notificationKey,
|
||||||
inObject: observer
|
inObject: observer
|
||||||
@@ -731,18 +749,19 @@ public final class ListMonitor<T: NSManagedObject> {
|
|||||||
object: self,
|
object: self,
|
||||||
closure: { [weak self] (note) -> Void in
|
closure: { [weak self] (note) -> Void in
|
||||||
|
|
||||||
if let strongSelf = self,
|
guard let strongSelf = self,
|
||||||
let userInfo = note.userInfo,
|
let userInfo = note.userInfo,
|
||||||
let sectionInfo = userInfo[UserInfoKeySectionInfo] as? NSFetchedResultsSectionInfo,
|
let sectionInfo = userInfo[UserInfoKeySectionInfo] as? NSFetchedResultsSectionInfo,
|
||||||
let sectionIndex = (userInfo[UserInfoKeySectionIndex] as? NSNumber)?.integerValue {
|
let sectionIndex = (userInfo[UserInfoKeySectionIndex] as? NSNumber)?.integerValue else {
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
callback(
|
callback(
|
||||||
monitor: strongSelf,
|
monitor: strongSelf,
|
||||||
sectionInfo: sectionInfo,
|
sectionInfo: sectionInfo,
|
||||||
sectionIndex: sectionIndex
|
sectionIndex: sectionIndex
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
),
|
),
|
||||||
forKey: notificationKey,
|
forKey: notificationKey,
|
||||||
inObject: observer
|
inObject: observer
|
||||||
|
|||||||
@@ -28,20 +28,6 @@ import CoreData
|
|||||||
import GCDKit
|
import GCDKit
|
||||||
|
|
||||||
|
|
||||||
private let ObjectMonitorWillChangeObjectNotification = "ObjectMonitorWillChangeObjectNotification"
|
|
||||||
private let ObjectMonitorDidDeleteObjectNotification = "ObjectMonitorDidDeleteObjectNotification"
|
|
||||||
private let ObjectMonitorDidUpdateObjectNotification = "ObjectMonitorDidUpdateObjectNotification"
|
|
||||||
|
|
||||||
private let UserInfoKeyObject = "UserInfoKeyObject"
|
|
||||||
|
|
||||||
private struct NotificationKey {
|
|
||||||
|
|
||||||
static var willChangeObject: Void?
|
|
||||||
static var didDeleteObject: Void?
|
|
||||||
static var didUpdateObject: Void?
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// MARK: - ObjectMonitor
|
// MARK: - ObjectMonitor
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -100,10 +86,11 @@ public final class ObjectMonitor<T: NSManagedObject> {
|
|||||||
toObserver: observer,
|
toObserver: observer,
|
||||||
callback: { [weak observer] (monitor) -> Void in
|
callback: { [weak observer] (monitor) -> Void in
|
||||||
|
|
||||||
if let object = monitor.object, let observer = observer {
|
guard let object = monitor.object, let observer = observer else {
|
||||||
|
|
||||||
observer.objectMonitor(monitor, willUpdateObject: object)
|
return
|
||||||
}
|
}
|
||||||
|
observer.objectMonitor(monitor, willUpdateObject: object)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
self.registerObjectNotification(
|
self.registerObjectNotification(
|
||||||
@@ -112,10 +99,11 @@ public final class ObjectMonitor<T: NSManagedObject> {
|
|||||||
toObserver: observer,
|
toObserver: observer,
|
||||||
callback: { [weak observer] (monitor, object) -> Void in
|
callback: { [weak observer] (monitor, object) -> Void in
|
||||||
|
|
||||||
if let observer = observer {
|
guard let observer = observer else {
|
||||||
|
|
||||||
observer.objectMonitor(monitor, didDeleteObject: object)
|
return
|
||||||
}
|
}
|
||||||
|
observer.objectMonitor(monitor, didDeleteObject: object)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
self.registerObjectNotification(
|
self.registerObjectNotification(
|
||||||
@@ -124,7 +112,10 @@ public final class ObjectMonitor<T: NSManagedObject> {
|
|||||||
toObserver: observer,
|
toObserver: observer,
|
||||||
callback: { [weak self, weak observer] (monitor, object) -> Void in
|
callback: { [weak self, weak observer] (monitor, object) -> Void in
|
||||||
|
|
||||||
if let strongSelf = self, let observer = observer {
|
guard let strongSelf = self, let observer = observer else {
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
let previousCommitedAttributes = strongSelf.lastCommittedAttributes
|
let previousCommitedAttributes = strongSelf.lastCommittedAttributes
|
||||||
let currentCommitedAttributes = object.committedValuesForKeys(nil) as! [String: NSObject]
|
let currentCommitedAttributes = object.committedValuesForKeys(nil) as! [String: NSObject]
|
||||||
@@ -145,7 +136,6 @@ public final class ObjectMonitor<T: NSManagedObject> {
|
|||||||
changedPersistentKeys: changedKeys
|
changedPersistentKeys: changedKeys
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -222,10 +212,11 @@ public final class ObjectMonitor<T: NSManagedObject> {
|
|||||||
object: self,
|
object: self,
|
||||||
closure: { [weak self] (note) -> Void in
|
closure: { [weak self] (note) -> Void in
|
||||||
|
|
||||||
if let strongSelf = self {
|
guard let strongSelf = self else {
|
||||||
|
|
||||||
callback(monitor: strongSelf)
|
return
|
||||||
}
|
}
|
||||||
|
callback(monitor: strongSelf)
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
forKey: notificationKey,
|
forKey: notificationKey,
|
||||||
@@ -241,15 +232,13 @@ public final class ObjectMonitor<T: NSManagedObject> {
|
|||||||
object: self,
|
object: self,
|
||||||
closure: { [weak self] (note) -> Void in
|
closure: { [weak self] (note) -> Void in
|
||||||
|
|
||||||
if let strongSelf = self,
|
guard let strongSelf = self,
|
||||||
let userInfo = note.userInfo,
|
let userInfo = note.userInfo,
|
||||||
let object = userInfo[UserInfoKeyObject] as? T {
|
let object = userInfo[UserInfoKeyObject] as? T else {
|
||||||
|
|
||||||
callback(
|
return
|
||||||
monitor: strongSelf,
|
|
||||||
object: object
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
callback(monitor: strongSelf, object: object)
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
forKey: notificationKey,
|
forKey: notificationKey,
|
||||||
@@ -352,3 +341,17 @@ private final class FetchedResultsControllerDelegate: NSObject, NSFetchedResults
|
|||||||
self.fetchedResultsController?.delegate = nil
|
self.fetchedResultsController?.delegate = nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private let ObjectMonitorWillChangeObjectNotification = "ObjectMonitorWillChangeObjectNotification"
|
||||||
|
private let ObjectMonitorDidDeleteObjectNotification = "ObjectMonitorDidDeleteObjectNotification"
|
||||||
|
private let ObjectMonitorDidUpdateObjectNotification = "ObjectMonitorDidUpdateObjectNotification"
|
||||||
|
|
||||||
|
private let UserInfoKeyObject = "UserInfoKeyObject"
|
||||||
|
|
||||||
|
private struct NotificationKey {
|
||||||
|
|
||||||
|
static var willChangeObject: Void?
|
||||||
|
static var didDeleteObject: Void?
|
||||||
|
static var didUpdateObject: Void?
|
||||||
|
}
|
||||||
|
|||||||
@@ -189,11 +189,8 @@ public final class DataStack {
|
|||||||
let coordinator = self.coordinator;
|
let coordinator = self.coordinator;
|
||||||
if let store = coordinator.persistentStoreForURL(fileURL) {
|
if let store = coordinator.persistentStoreForURL(fileURL) {
|
||||||
|
|
||||||
if store.type == NSSQLiteStoreType
|
guard store.type == NSSQLiteStoreType
|
||||||
&& store.configurationName == (configuration ?? Into.defaultConfigurationName) {
|
&& store.configurationName == (configuration ?? Into.defaultConfigurationName) else {
|
||||||
|
|
||||||
return store
|
|
||||||
}
|
|
||||||
|
|
||||||
let error = NSError(coreStoreErrorCode: .DifferentPersistentStoreExistsAtURL)
|
let error = NSError(coreStoreErrorCode: .DifferentPersistentStoreExistsAtURL)
|
||||||
CoreStore.handleError(
|
CoreStore.handleError(
|
||||||
@@ -204,16 +201,15 @@ public final class DataStack {
|
|||||||
throw error
|
throw error
|
||||||
}
|
}
|
||||||
|
|
||||||
let fileManager = NSFileManager.defaultManager()
|
return store
|
||||||
do {
|
}
|
||||||
|
|
||||||
try fileManager.createDirectoryAtURL(
|
let fileManager = NSFileManager.defaultManager()
|
||||||
|
_ = try? fileManager.createDirectoryAtURL(
|
||||||
fileURL.URLByDeletingLastPathComponent!,
|
fileURL.URLByDeletingLastPathComponent!,
|
||||||
withIntermediateDirectories: true,
|
withIntermediateDirectories: true,
|
||||||
attributes: nil
|
attributes: nil
|
||||||
)
|
)
|
||||||
}
|
|
||||||
catch _ { }
|
|
||||||
|
|
||||||
var store: NSPersistentStore?
|
var store: NSPersistentStore?
|
||||||
var storeError: NSError?
|
var storeError: NSError?
|
||||||
@@ -377,11 +373,7 @@ public final class DataStack {
|
|||||||
|
|
||||||
for store in self.coordinator.persistentStores {
|
for store in self.coordinator.persistentStores {
|
||||||
|
|
||||||
do {
|
_ = try? self.coordinator.removePersistentStore(store)
|
||||||
|
|
||||||
try self.coordinator.removePersistentStore(store)
|
|
||||||
}
|
|
||||||
catch _ { }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user