AECoreDataUI was previously part of AERecord,
so you may want to check that also.
When it comes to connecting data with the UI, nice approach is to use NSFetchedResultsController.
CoreDataTableViewController wrapper from Stanford’s CS193p is so great at it, that I’ve written it in Swift and made CoreDataCollectionViewController too in the same fashion.
Features
Core Data driven UITableViewController (UI automatically reflects data in Core Data model)
Core Data driven UICollectionViewController (UI automatically reflects data in Core Data model)
CoreDataTableViewController mostly just copies the code from NSFetchedResultsController
documentation page into a subclass of UITableViewController.
Just subclass it and set it’s fetchedResultsController property.
After that you’ll only have to implement tableView(_:cellForRowAtIndexPath:)
and fetchedResultsController will take care of other required data source methods.
It will also update UITableView whenever the underlying data changes (insert, delete, update, move).
Example
import UIKit
import CoreData
class MyTableViewController: CoreDataTableViewController {
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
refreshData()
}
func refreshData() {
let sortDescriptors = [NSSortDescriptor(key: "timeStamp", ascending: true)]
let request = Event.createFetchRequest(sortDescriptors: sortDescriptors)
fetchedResultsController = NSFetchedResultsController(fetchRequest: request,
managedObjectContext: AERecord.Context.default,
sectionNameKeyPath: nil, cacheName: nil)
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as UITableViewCell
if let frc = fetchedResultsController {
if let object = frc.objectAtIndexPath(indexPath) as? Event {
cell.textLabel.text = object.timeStamp.description
}
}
return cell
}
}
CoreDataCollectionViewController
Same as with the CoreDataTableViewController , just with CoreDataCollectionViewController .
AECoreDataUI
Super awesome Core Data driven UI for iOS written in Swift
Index
Intro
AECoreDataUI was previously part of AERecord, so you may want to check that also.
When it comes to connecting data with the UI, nice approach is to use
NSFetchedResultsController
.CoreDataTableViewController
wrapper from Stanford’s CS193p is so great at it, that I’ve written it in Swift and madeCoreDataCollectionViewController
too in the same fashion.Features
Usage
You may check this demo project for example.
CoreDataTableViewController
CoreDataTableViewController
mostly just copies the code fromNSFetchedResultsController
documentation page into a subclass ofUITableViewController
.Just subclass it and set it’s
fetchedResultsController
property.After that you’ll only have to implement
tableView(_:cellForRowAtIndexPath:)
andfetchedResultsController
will take care of other required data source methods. It will also updateUITableView
whenever the underlying data changes (insert, delete, update, move).Example
CoreDataCollectionViewController
Same as with the
CoreDataTableViewController
, just withCoreDataCollectionViewController
.Installation
Swift Package Manager:
Carthage:
CocoaPods:
License
AECoreDataUI is released under the MIT license. See LICENSE for details.