Skip to content

Commit

Permalink
Changed iCloud completion notification to closure
Browse files Browse the repository at this point in the history
  • Loading branch information
David Chavez committed Mar 22, 2015
1 parent 8e7e44d commit c9157a9
Showing 4 changed files with 36 additions and 32 deletions.
8 changes: 4 additions & 4 deletions example/SugarRecordExample.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
@@ -33,7 +33,7 @@
3DF36C881A38F5A800A73311 /* Models.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 3DF36C7E1A38F5A800A73311 /* Models.xcdatamodeld */; };
3DF36C971A39059D00A73311 /* Realm.framework in Copy Realm */ = {isa = PBXBuildFile; fileRef = 3DF36C921A39057F00A73311 /* Realm.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
3DF36C991A3905CE00A73311 /* libc++.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DF36C981A3905CE00A73311 /* libc++.dylib */; };
A290563A1A9634B600F47010 /* iCloudViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A29056391A9634B600F47010 /* iCloudViewController.swift */; };
A290563A1A9634B600F47010 /* iCloudTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A29056391A9634B600F47010 /* iCloudTableViewController.swift */; };
A29056431A9638DA00F47010 /* ICloudModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A29056421A9638DA00F47010 /* ICloudModel.swift */; };
E14DAC441A3A0448008AC983 /* RestKitTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E14DAC431A3A0448008AC983 /* RestKitTableViewController.swift */; };
E14DAC451A3A053B008AC983 /* RestkitCDStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1526DEE1A38A05C00BC6E1E /* RestkitCDStack.swift */; };
@@ -102,7 +102,7 @@
3DF36C931A39057F00A73311 /* RLMSupport.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = RLMSupport.swift; path = ../../project/frameworks/realm/RLMSupport.swift; sourceTree = "<group>"; };
3DF36C981A3905CE00A73311 /* libc++.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libc++.dylib"; path = "usr/lib/libc++.dylib"; sourceTree = SDKROOT; };
93387547534B0073B3B4B328 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; };
A29056391A9634B600F47010 /* iCloudViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = iCloudViewController.swift; sourceTree = "<group>"; };
A29056391A9634B600F47010 /* iCloudTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = iCloudTableViewController.swift; sourceTree = "<group>"; };
A29056421A9638DA00F47010 /* ICloudModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ICloudModel.swift; sourceTree = "<group>"; };
BED8AACE3217C166E177ACA9 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = "<group>"; };
E14DAC421A3A01BB008AC983 /* SugarRecordExample-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "SugarRecordExample-Bridging-Header.h"; path = "Supporting Files/SugarRecordExample-Bridging-Header.h"; sourceTree = "<group>"; };
@@ -202,7 +202,7 @@
3DF36C791A38F5A800A73311 /* CoreDataTableViewController.swift */,
E14DAC431A3A0448008AC983 /* RestKitTableViewController.swift */,
3D4754DE1A4C7C5200479D16 /* RealmTableViewController.swift */,
A29056391A9634B600F47010 /* iCloudViewController.swift */,
A29056391A9634B600F47010 /* iCloudTableViewController.swift */,
3DF36C7B1A38F5A800A73311 /* StackTableViewController.swift */,
);
path = Controllers;
@@ -455,7 +455,7 @@
files = (
3D4754E71A4C7D3400479D16 /* RLMSupport.swift in Sources */,
3D4754ED1A4C7F5500479D16 /* SugarRecordRLMContext.swift in Sources */,
A290563A1A9634B600F47010 /* iCloudViewController.swift in Sources */,
A290563A1A9634B600F47010 /* iCloudTableViewController.swift in Sources */,
3D4754EC1A4C7F5300479D16 /* RLMObjectMigration.swift in Sources */,
E197C9CD1A3F97AA000533A4 /* RestKitModel.swift in Sources */,
3D4754EB1A4C7F5000479D16 /* RLMObject+SugarRecord.swift in Sources */,
Original file line number Diff line number Diff line change
@@ -55,7 +55,7 @@ class StacksTableViewController: UITableViewController {
viewController = RealmTableViewController()

case "iCloud":
viewController = iCloudViewController()
viewController = iCloudTableViewController()

default:
println("View Controller not found for stack: \(stack)")
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
//
// iCloudViewController.swift
// iCloudTableViewController.swift
// SugarRecordExample
//
// Created by David Chavez on 2/19/15.
@@ -9,7 +9,7 @@
import UIKit
import CoreData

class iCloudViewController: StackTableViewController {
class iCloudTableViewController: StackTableViewController {

//MARK: - Attributes

@@ -28,11 +28,15 @@ class iCloudViewController: StackTableViewController {
self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: self.cellIdentifier())

let data = iCloudData(iCloudAppID: "com.sugarrecord.example.SugarRecordExample", iCloudDataDirectoryName: "data.nosync", iCloudLogsDirectory: "")
self.stack = iCloudCDStack(databaseName: "iCloud.sqlite", model: self.model, icloudData: data)
self.stack = iCloudCDStack(databaseName: "iCloud.sqlite", model: self.model, icloudData: data, completion: {
dispatch_async(dispatch_get_main_queue(), {
self.fetchData()
self.tableView.reloadData()
})

})
(self.stack as iCloudCDStack).autoSaving = true
SugarRecord.addStack(self.stack!)

NSNotificationCenter.defaultCenter().addObserver(self, selector: "icloudInitialized", name: "iCloudStackInitialized", object: nil)
}

override func viewWillAppear(animated: Bool) {
@@ -53,16 +57,6 @@ class iCloudViewController: StackTableViewController {
tableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: .Top)
}

//MARK: - Listeners

func icloudInitialized() {
dispatch_async(dispatch_get_main_queue(), {
self.fetchData()
self.tableView.reloadData()
})
}


//MARK: - Data Source

override func fetchData() {
34 changes: 22 additions & 12 deletions library/CoreData/Base/iCloudCDStack.swift
Original file line number Diff line number Diff line change
@@ -49,6 +49,9 @@ public struct iCloudData
*/
public class iCloudCDStack: DefaultCDStack
{
//MARK: - Class properties
public var loadCompletedClosure: ()->() = {}

//MARK: - Properties

/// iCloud Data struct with the information
@@ -64,12 +67,14 @@ public class iCloudCDStack: DefaultCDStack
:param: model NSManagedObjectModel with the database model
:param: automigrating Bool Indicating if the migration has to be automatically executed
:param: icloudData iCloudData information
:param: completion Closure to be executed when iCloud stack finishes initializing

:returns: iCloudCDStack object
*/
public init(databaseURL: NSURL, model: NSManagedObjectModel?, automigrating: Bool, icloudData: iCloudData)
public init(databaseURL: NSURL, model: NSManagedObjectModel?, automigrating: Bool, icloudData: iCloudData, completion: ()->())
{
super.init(databaseURL: databaseURL, model: model, automigrating: automigrating)
self.loadCompletedClosure = completion
self.icloudData = icloudData
self.automigrating = automigrating
self.databasePath = databaseURL
@@ -84,38 +89,41 @@ public class iCloudCDStack: DefaultCDStack

:param: databaseName String with the database name
:param: icloudData iCloud Data struct
:param: completion Closure to be executed when iCloud stack finishes initializing

:returns: DefaultCDStack object
*/
convenience public init(databaseName: String, icloudData: iCloudData)
convenience public init(databaseName: String, icloudData: iCloudData, completion: ()->())
{
self.init(databaseURL: iCloudCDStack.databasePathURLFromName(databaseName), icloudData: icloudData)
self.init(databaseURL: iCloudCDStack.databasePathURLFromName(databaseName), icloudData: icloudData, completion: completion)
}

/**
Initialize the CoreData default stack passing the database path in String format and a flag indicating if the automigration has to be automatically executed

:param: databasePath String with the database path
:param: icloudData iCloud Data struct
:param: completion Closure to be executed when iCloud stack finishes initializing

:returns: DefaultCDStack object
*/
convenience public init(databasePath: String, icloudData: iCloudData)
convenience public init(databasePath: String, icloudData: iCloudData, completion: ()->())
{
self.init(databaseURL: NSURL(fileURLWithPath: databasePath)!, icloudData: icloudData)
self.init(databaseURL: NSURL(fileURLWithPath: databasePath)!, icloudData: icloudData, completion: completion)
}

/**
Initialize the CoreData default stack passing the database path URL and a flag indicating if the automigration has to be automatically executed

:param: databaseURL NSURL with the database path
:param: icloudData iCloud Data struct
:param: completion Closure to be executed when iCloud stack finishes initializing

:returns: DefaultCDStack object
*/
convenience public init(databaseURL: NSURL, icloudData: iCloudData)
convenience public init(databaseURL: NSURL, icloudData: iCloudData, completion: ()->())
{
self.init(databaseURL: databaseURL, model: nil, automigrating: true,icloudData: icloudData)
self.init(databaseURL: databaseURL, model: nil, automigrating: true,icloudData: icloudData, completion: completion)
}

/**
@@ -124,12 +132,13 @@ public class iCloudCDStack: DefaultCDStack
:param: databaseName String with the database name
:param: model NSManagedObjectModel with the database model
:param: icloudData iCloud Data struct
:param: completion Closure to be executed when iCloud stack finishes initializing

:returns: DefaultCDStack object
*/
convenience public init(databaseName: String, model: NSManagedObjectModel, icloudData: iCloudData)
convenience public init(databaseName: String, model: NSManagedObjectModel, icloudData: iCloudData, completion: ()->())
{
self.init(databaseURL: DefaultCDStack.databasePathURLFromName(databaseName), model: model, automigrating: true, icloudData: icloudData)
self.init(databaseURL: DefaultCDStack.databasePathURLFromName(databaseName), model: model, automigrating: true, icloudData: icloudData, completion: completion)
}

/**
@@ -138,12 +147,13 @@ public class iCloudCDStack: DefaultCDStack
:param: databasePath String with the database path
:param: model NSManagedObjectModel with the database model
:param: icloudData iCloud Data struct
:param: completion Closure to be executed when iCloud stack finishes initializing

:returns: DefaultCDStack object
*/
convenience public init(databasePath: String, model: NSManagedObjectModel, icloudData: iCloudData)
convenience public init(databasePath: String, model: NSManagedObjectModel, icloudData: iCloudData, completion: ()->())
{
self.init(databaseURL: NSURL(fileURLWithPath: databasePath)!, model: model, automigrating: true, icloudData: icloudData)
self.init(databaseURL: NSURL(fileURLWithPath: databasePath)!, model: model, automigrating: true, icloudData: icloudData, completion: completion)
}

/**
@@ -175,7 +185,7 @@ public class iCloudCDStack: DefaultCDStack
self!.addObservers()
self!.stackInitialized = true

NSNotificationCenter.defaultCenter().postNotificationName("iCloudStackInitialized", object: nil)
self!.loadCompletedClosure()
}
}

0 comments on commit c9157a9

Please sign in to comment.