Alamofire при ответе данных Swift 4 Timer - PullRequest
0 голосов
/ 29 сентября 2018

У меня есть функция Alamofire, например, когда данные поступают для вставки данных в глобальный NsDictionary

Common.Customers

Функция -

static func PostAlomofire(format : RequestFormat)  {

    let loginParam: [String: Any] = [
        "searchTerm": format.Name,
        "pageSize": format.PageSize,
        "pageNumber": format.PageNumber ,
        "deviceId": format.DeviceId
    ]
print(loginParam)

  Alamofire.request("http://111.3.4.2/website/api/Customer/Search", method: .post, parameters: loginParam, encoding: JSONEncoding.prettyPrinted)
        .responseJSON { response in    
            let result = response.result
            print(result.value)
            if let dict = result.value as? Dictionary<String,AnyObject>
            {
                if let innerDic = dict["results"]
                {

                    Common.Customers = innerDic as! [NSDictionary]
                }
            }
            print(Common.Customers)
    }

}

Этот код работает.Но если я не использовал таймер Common.Customers, то всегда ноль.Когда я хочу вызвать эту функцию, я звоню как

  WebService.PostAlomofire(format: format)
    _ = Timer.scheduledTimer(withTimeInterval: 0.5, repeats: false) { timer in
        self.Table_tv.reloadData()

    }

, но если данные не приходили 0,5 секунд, этот код не работает.

Timer.scheduledTimer

Это правильный путь илине?Это не безопасно для меня.Что я могу использовать, если это не так?

1 Ответ

0 голосов
/ 29 сентября 2018

Вам нужно создать обработчик завершения, так как это не работа таймера

static func PostAlomofire(format : RequestFormat,completion:@escaping(()-> Void)) {
       let loginParam: [String: Any] = [
    "searchTerm": format.Name,
    "pageSize": format.PageSize,
    "pageNumber": format.PageNumber ,
    "deviceId": format.DeviceId
]
print(loginParam)

 Alamofire.request("http://111.3.4.2/website/api/Customer/Search", method: .post, parameters: loginParam, encoding: JSONEncoding.prettyPrinted)
    .responseJSON { response in    
        let result = response.result
        print(result.value)
        if let dict = result.value as? [String: Any]
        {
            if let innerDic = dict["results"]
            {

                Common.Customers = innerDic as! [[String: Any]]
                completion()
            }
        }
        print(Common.Customers)
}
}

//

WebService.PostAlomofire(format: format) {
     self.Table_tv.reloadData()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...