Created
November 18, 2015 16:05
-
-
Save romainmenke/6be5cc5d1ef25c834ffb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import CoreData | |
import UIKit | |
class ViewController: UIViewController { | |
var appDelegate : AppDelegate? | |
var managedContext : NSManagedObjectContext? | |
override func viewDidLoad() { | |
super.viewDidLoad() | |
appDelegate = UIApplication.sharedApplication().delegate as? AppDelegate | |
managedContext = appDelegate?.managedObjectContext | |
let companies = fetchCompanies() | |
if companies.count == 0 { | |
createACompany() | |
} else { | |
for company in companies { | |
let employees = getEmployees(forCompany: company) | |
for employee in employees { print(employee.name) } | |
} | |
} | |
// Do any additional setup after loading the view, typically from a nib. | |
} | |
override func didReceiveMemoryWarning() { | |
super.didReceiveMemoryWarning() | |
// Dispose of any resources that can be recreated. | |
} | |
func getEmployees(forCompany company : Company) -> [Employee] { | |
guard let employeeSet = company.employees, let employees = employeeSet.allObjects as? [Employee] else { | |
return [] | |
} | |
return employees | |
} | |
func createACompany() { | |
guard let moc = managedContext else { return } | |
guard let company = NSEntityDescription.insertNewObjectForEntityForName("Company", inManagedObjectContext: moc) as? Company else { | |
return | |
} | |
company.name = "Apple" | |
guard let bob = NSEntityDescription.insertNewObjectForEntityForName("Employee", inManagedObjectContext: moc) as? Employee else { | |
return | |
} | |
bob.name = "Bob" | |
bob.company = company | |
do { | |
try moc.save() | |
} catch { | |
print("core data save error : \(error)") | |
} | |
moc.refreshAllObjects() | |
} | |
func fetchCompanies() -> [Company] { | |
guard let moc = managedContext else { return [] } | |
let request = NSFetchRequest(entityName: "Company") | |
request.returnsObjectsAsFaults = true | |
do { | |
let results = try moc.executeFetchRequest(request) | |
guard let companies = results as? [Company] else { | |
return [] | |
} | |
return companies | |
}catch let error as NSError{ | |
print("core data fetch error: \(error)") | |
return [] | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment