Skip to content

Instantly share code, notes, and snippets.

import Foundation
import UIKit
/**
* Coordinates contentInset on scroll view to always show full content on keyboard appearing.
*/
class KeyboardAwareScrollViewCoordinator: NSObject {
let scrollView: UIScrollView
private let originalContentInset: UIEdgeInsets
func delay(_ delay: Double, closure: @escaping () -> Void) {
DispatchQueue.main.asyncAfter(deadline: .now() + delay, execute: closure)
}
import UIKit
extension UIViewController {
/**
Add childController with no transition.
Embeds its view in container.
Calls didMove(toParentViewController:) on childController at a last step.
*/
func addImmediately(childController: UIViewController, embeddedIn container: UIView) {
import Foundation
import UIKit
class SimpleCollectionViewDataSource<Cell: AnyObject, Object>: NSObject, UICollectionViewDataSource {
var objects: [[Object]]
func objectAtIndexPath(indexPath: NSIndexPath) -> Object {
return objects[indexPath.section][indexPath.row]
}
import Foundation
import CoreData
class SafeFetchedResultsController: NSFetchedResultsController {
private weak var safeDelegate: NSFetchedResultsControllerDelegate?
override var delegate: NSFetchedResultsControllerDelegate? {
get {
return safeDelegate
import Foundation
import UIKit
import CoreData
class FetchedResultsTableDataSource: NSObject {
typealias CellForRowAtIndexPath = (tableView: UITableView, indexPath: NSIndexPath, object: AnyObject) -> UITableViewCell
let fetchedResultController: NSFetchedResultsController
private let cellForRowAtIndexPath: CellForRowAtIndexPath
import Foundation
import CoreData
class CoreDataStack {
let mainContext: NSManagedObjectContext
private let persistentStoreCoordinator: NSPersistentStoreCoordinator
private let managedObjectModel: NSManagedObjectModel
import Foundation
import UIKit
import CoreData
class FetchedResultsControllerTableDelegate: NSObject {
let tableView: UITableView
var preserveSelection: Bool = true
var didEndUpdates: (() -> Void)?