     }
 
     public required init?(coder aDecoder: NSCoder) {
-        if let cellCreationType = CellCreationType(rawValue: aDecoder.decodeIntegerForKey("CellCreationType")) {
+        if let cellCreationType = CellCreationType(rawValue: aDecoder.decodeIntegerForKey(TableViewController.creationTypeKey)) {
             self.cellCreationType = cellCreationType
             super.init(coder: aDecoder)
         } else {


import UIKit

public class TableViewController<ContentType>: UITableViewController, CellsControllerProtocol {

    private var heightCache: [NSIndexPath: CGFloat] = [:]

    private var cellsObjectsCreators: [String: ViewsGenerator<UITableViewCell>] = [:]

    private let cellCreationType: CellCreationType

    // MARK: - Initialization



    public override func encodeWithCoder(aCoder: NSCoder) {
        super.encodeWithCoder(aCoder)
        aCoder.encodeInteger(cellCreationType.rawValue, forKey: TableViewController.creationTypeKey)
    }

    /**
