                 completion(nil)
         }
     }
-    
 }

        }
    }
    
    fileprivate func triggerImp(_ completion: ((AnyObject?)->(Void)))
    {
        completion(nil)
    }
}

class DeepLinkArticle : DeepLink
{
    var articleID : String!
    
    fileprivate init(articleStr: String)
    {
        self.articleID = articleStr
        super.init()
    }
    
    fileprivate override func triggerImp(_ completion: ((AnyObject?)->(Void)))
    {
        super.triggerImp()
            { (passedData) in
                
                var vc = UIViewController()
                let  storyboard = UIStoryboard.init(name: "Main_Storyboard", bundle: nil)
                // Handle Deep Link Data to present the Article passed through
                
                switch self.articleID {
                case ArticleType.ArticleA.rawValue :
                    vc = storyboard.instantiateViewController(withIdentifier: "ViewControllerA")
                    break

    
    var description : String {
        switch self {
        case .example:  return "example";
        }
    }
    
}

enum ArticleType: String {
    case ArticleA = "A"
    case ArticleB = "B"
    case ArticleC = "C"
}


class DeepLink: NSObject {

    class func create(_ userInfo : [AnyHashable: Any], sectionKey: DeepLinkAppSectionKey) -> DeepLink? {
        let info = userInfo as NSDictionary
        
        switch sectionKey {
        case DeepLinkAppSectionKey.example:
            guard let articleID = info.object(forKey: DeepLinkAppSectionKey.example.description) as? String else {return nil}
            
            var deepLink : DeepLink? = nil
            if !articleID.isEmpty
            {
                deepLink = DeepLinkExample(exampleStr: articleID)
            }
            return deepLink
        }
        
    }
    
    fileprivate override init() {
        super.init()
    }
    
    final func trigger() {
        DispatchQueue.main.async {
            self.triggerImp()
                { (passedData) in
        
