/*
 |  _   ____   ____   _
 | | |‾|  ⚈ |-| ⚈  |‾| |
 | | |  ‾‾‾‾| |‾‾‾‾  | |
 |  ‾        ‾        ‾
 */

import UIKit

public extension UIAlertAction {
    
    private enum Keys {
        static let checked = "checked"
        static let image = "image"
    }
    
    public class var cancel: UIAlertAction {
        return UIAlertAction(title: NSLocalizedString("Cancel", comment: "Cancel button title"), style: .cancel) { _ in
            if #available(iOS 10.0, *) {
                UIImpactFeedbackGenerator(style: .light).impactOccurred()
            }
        }
    }
    
    public func updateChecked(to isChecked: Bool) {
        setValue(isChecked, forKey: Keys.checked)
    }
    
    public func updateImage(to image: UIImage) {
        setValue(image, forKey: Keys.image)
    }

}

/*
 |  _   ____   ____   _
 | | |‾|  ⚈ |-| ⚈  |‾| |
 | | |  ‾‾‾‾| |‾‾‾‾  | |
 |  ‾        ‾        ‾
 */

import UIKit

public extension UIAlertAction {
    
    private enum Keys {
        static let checked = "checked"
    }
    
    public class var cancel: UIAlertAction {
        return UIAlertAction(title: NSLocalizedString("Cancel", comment: "Cancel button title"), style: .cancel) { _ in
            if #available(iOS 10.0, *) {
                UIImpactFeedbackGenerator(style: .light).impactOccurred()
            }
        }
    }
    
    public func updateChecked(to isChecked: Bool) {
        setValue(isChecked, forKey: Keys.checked)
    }

}

--- 
+++ 
@@ -11,6 +11,7 @@
     
     private enum Keys {
         static let checked = "checked"
+        static let image = "image"
     }
     
     public class var cancel: UIAlertAction {
@@ -24,5 +25,9 @@
     public func updateChecked(to isChecked: Bool) {
         setValue(isChecked, forKey: Keys.checked)
     }
+    
+    public func updateImage(to image: UIImage) {
+        setValue(image, forKey: Keys.image)
+    }
 
 }
Add support for setting image on UIAlertAction
