     /// The previous text field. Not retained. This is set automatically on the other text field when you set the `nextTextField`.
     weak internal(set) var previousTextField: UITextField? {
         get {
-            return (objc_getAssociatedObject(self, &PreviousTextFieldKey) as? WeakObjectContainer)?.object as? UITextField
+            return retrieveTextField(&PreviousTextFieldKey)
         }
 
         set {
-            objc_setAssociatedObject(self, &PreviousTextFieldKey, WeakObjectContainer(object: newValue), objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
+            storeTextField(newValue, withKey: &PreviousTextFieldKey)
             applyInputAccessoryView()
         }
     }


        textFieldNavigationToolbar?.previousButton.enabled = previousTextField != nil
        textFieldNavigationToolbar?.nextButton.enabled = nextTextField != nil
    }
}


    /// The next text field. Not retained. Setting this will also set the `previousTextField` on the other text field.
    @IBOutlet weak var nextTextField: UITextField? {
        get {
            return retrieveTextField(&NextTextFieldKey)
        }

        set {
            nextTextField?.previousTextField = nil
            storeTextField(newValue, withKey: &NextTextFieldKey)
            applyInputAccessoryView()
            newValue?.previousTextField = self
        }
