Ios 在uiwebview中进行身份验证后调用func

Ios 在uiwebview中进行身份验证后调用func,ios,swift,authentication,uiwebview,cas,Ios,Swift,Authentication,Uiwebview,Cas,在我当前的项目中,我拥有CAS auth。我在WebView上做的。我的func看起来像: func models(callback: ([ModelType])->()) { UIApplication.sharedApplication().networkActivityIndicatorVisible = true MLMPProvider.request(MLMP.Models, completion: { (data, status, respo

在我当前的项目中,我拥有CAS auth。我在WebView上做的。我的func看起来像:

func models(callback: ([ModelType])->()) {
    UIApplication.sharedApplication().networkActivityIndicatorVisible = true

    MLMPProvider.request(MLMP.Models, completion: {
        (data, status, response, error) -> () in
        func checkResponse(response:NSURLResponse){
            if toString(response.URL!).rangeOfString("login") != nil{

                NSNotificationCenter.defaultCenter().postNotificationName("LOGIN", object: response.URL!)
            }

        }

        checkResponse(response!)

        var result: [ModelType] = []
        if let data = data, let models = JSON(data: data, options: NSJSONReadingOptions.allZeros, error: nil).array {
            for model in models {
                if let modelId = model["uuid"].string {
                    result += [.Custom(modelId)]
                }
            }
        }

        callback(result)
        UIApplication.sharedApplication().networkActivityIndicatorVisible = false

    })
}
我的问题是:在auth之后使用回调调用模型的最佳方法是什么?也许我可以用选择器变魔术?

我解决了我的问题 我将变量添加到我的网络层

var closure:Any!
var methodName:String!
并在从服务器获取令牌时添加通知回调

@objc private func authTokenGetted(notification: NSNotification){
       recallMethodWith(methodName, andcallback: closure)
}
func recallMethodWith(name:String, andcallback: Any){
    switch name{
    case MethodsName.models:
        models(andcallback as! ([ModelType])->())
    case MethodsName.model:
        println("modelcall")
    default:
            println(name)

    }
}

init(){
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "authTokenGetted:", name: "AuthDone", object: nil)
}
我的模型func看起来像:

func checkResponse(response:NSURLResponse) -> Bool{
    if toString(response.URL!).rangeOfString("login") != nil{
        NSNotificationCenter.defaultCenter().postNotificationName("LOGIN", object: response.URL!)
        return false
    }
    return true
}
func models(callback: ([ModelType])->()) {
    UIApplication.sharedApplication().networkActivityIndicatorVisible = true
    self.methodName = __FUNCTION__
    self.closure = callback

    MLMPProvider.request(MLMP.Models, completion: {
        (data, status, response, error) -> () in

        if self.checkResponse(response!){
            var result: [ModelType] = []
            if let data = data, let models = JSON(data: data, options: NSJSONReadingOptions.allZeros, error: nil).array {
                for model in models {
                    if let modelId = model["uuid"].string {
                        result += [.Custom(modelId)]
                    }
                }
            }

            callback(result)
            UIApplication.sharedApplication().networkActivityIndicatorVisible = false
        }


    })
}