Skip to content

Instantly share code, notes, and snippets.

@romainmenke
Created November 18, 2015 16:05
Show Gist options
  • Save romainmenke/6be5cc5d1ef25c834ffb to your computer and use it in GitHub Desktop.
Save romainmenke/6be5cc5d1ef25c834ffb to your computer and use it in GitHub Desktop.
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