Skip to content

Instantly share code, notes, and snippets.

@Ellein-Keen
Created April 29, 2016 10:44
Show Gist options
  • Save Ellein-Keen/c09f581a333c07639ba99a772c41ff65 to your computer and use it in GitHub Desktop.
Save Ellein-Keen/c09f581a333c07639ba99a772c41ff65 to your computer and use it in GitHub Desktop.
Core Data Cheat Sheet for Swift iOS Developers
// Fetch entities
let fetchRequest = NSFetchRequest(entityName: "Note")
var sortDescriptor = NSSortDescriptor(key: "text", ascending: false)
fetchRequest.sortDescriptors = [sortDescriptor]
let predicate = NSPredicate(format: "MyEntityAttribute == %@", "Matching Value")
fetchRequest.predicate = predicate
fetchRequest.fetchLimit = 10
let fetchedResults = context.executeFetchRequest(fetchRequest, error: nil) as? [Note]
if let results = fetchedResults{
println(results.description)
}
//NSFetchedResultsController
lazy var fetchedResultsController : NSFetchedResultsController = {
let context = CoreDataController.sharedCoreDataController.managedObjectContext!
let fetchRequest = NSFetchRequest(entityName: "TimeTable")
var sortDescriptor = NSSortDescriptor(key: "dateTime.timeStamp", ascending: true)
fetchRequest.sortDescriptors = [sortDescriptor]
NSFetchedResultsController.deleteCacheWithName("TimeTable")
let frc = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: "TimeTable")
frc.delegate = self
return frc
}()
override func viewDidLoad() {
super.viewDidLoad()
fetchedResultController.performFetch(nil) //Executes the receiver’s fetch request.
}
fetchedResultController.objectAtIndexPath(indexPath) as? Note
let firstSection = fetchedResultsController.sections?.first as? NSFetchedResultsSectionInfo
irstSection.numberOfObjects
//Insert a new entity
var newNote = NSEntityDescription.insertNewObjectForEntityForName("Note", inManagedObjectContext: context) as! Note
//----
let dateTime = NSEntityDescription.insertNewObjectForEntityForName("DateTime", inManagedObjectContext: context) as! DateTime
dateTime.dateTime = 534634
let image = NSEntityDescription.insertNewObjectForEntityForName("Photos", inManagedObjectContext: context) as! Photos
image.photoFile = UIImageJPEGRepresentation(UIImage(named: "testImage")!, 1)
image.photoName = "testImage"
let coordinate = NSEntityDescription.insertNewObjectForEntityForName("Coordinate", inManagedObjectContext: context) as! Coordinate
coordinate.lat = 42.324535
coordinate.lng = 30.342532
coordinate.address = "test address"
//----
newNote.text = "test)"
newNote.dateTime = dateTime
newNote.photos = NSSet(object: image)
newNote.coordinate = coordinate
newNote.sent = false
context.save(nil)
context.reset()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment