ios - 几秒钟后无法正常工作后刷新 Alamofire 请求

标签 ios swift alamofire

  1. 我在带有选择器功能的viewdidload中使用了timer

例如。

var timer = Timer.scheduledTimer(timeInterval: 0.4, target: self,selector: #selector(HomeViewController.getRequest), userInfo: nil, repeats: true)
  1. getRequest() 用于alamofire解析json并使用collection view填充数据

  2. 计时器和功能正常运行,但 json 数据连续附加到数组中。在 View Collection View 中不断出现数据。

  3. 我只想在几秒钟后刷新 Alamofire 请求而不是整个函数,因为 json 数据被推送到数组和字典中。

我的 getRequest() 代码:

func getRequest() {

     let getUserID :UserDefaults = UserDefaults.standard

     let parameters: Parameters = [

        "user_id" : getUserID.value(forKey: "user_id")!

    ]

    Alamofire.request(URL_String, method: .post, parameters: parameters).responseJSON{


        (response) in


        print(" url :\(response.request)")

        guard response.result.isSuccess  else {

            print("Block 1 ")


            print(" response :\(response)")

            print("Error with response: \(String(describing: response.result.error))")
            return
        }
        guard let dict = response.result.value as? Dictionary <String,AnyObject>


            else {

            print(" response :\(response)")

            print("Error with dictionary: \(String(describing: response.result.error))")
            return
        }

        guard let dictData = dict["message"] as? [Dictionary <String,AnyObject>] else {

            print("Error with dictionary data: \(String(describing: response.result.error))")

            return
        }

        for data in dictData{

            self.lawNameArray.append(data["title"] as! String)
            self.lawImageArray.append(data["law_images"] as! String)
            self.dataArray.append(data["title"] as! String)
            print("lawNameArray..............\(self.lawNameArray)")
            print("lawImageArray..............\(self.lawImageArray)")

            self.lawIdArray.append(data["law_id"] as! String)
            self.lawStatusArray.append(data["status"] as! String)

            print("law Id Array :\(self.lawIdArray)")

            print("Data array :\(self.dataArray)")

        }
        self.myActivityIndicator.stopAnimating()
        self.myActivityIndicator.hidesWhenStopped = true
        self.collectionView.reloadData()
        print(" dict data\(dictData)")

    }


}

最佳答案

我猜你需要在添加新数据之前清空数组,所以你可以在 for 循环之前添加以下代码:

self.lawNameArray.removeAll()
self.lawImageArray.removeAll()
self.dataArray.removeAll()
self.lawIdArray.removeAll()
self.lawStatusArray.removeAll()

关于ios - 几秒钟后无法正常工作后刷新 Alamofire 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49011162/

相关文章:

ios - 将NSDate转换为Unix时间戳以在字典中使用

ios - Xcode 10 build 10A255 需要清理构建文件夹以进行所有更改

iphone - iphone 相机拍照前如何设置延迟?

swift - 如何在不将密码放入 Vapor 3 的 configure.swift 的情况下配置 Fluent/MySQL 数据库连接?

ios: NSAttributedString 分配错误

swift - 从 json 数组快速加载到对象数组中

ios - 字母数字数组排序

iOS - Crashlytics - 缺少几次崩溃

swift - 向 Alamofire 添加完成处理程序

ios - Alamofire : How to handle errors globally