【问题标题】:Swift appended items are not savedSwift附加的项目不保存
【发布时间】:2018-12-26 10:07:36
【问题描述】:

在这里,我声明了 myArray。

class AcikIlanlarViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    var myArray: [String] = []

这里,我调用了修改数组的函数loadPage。

    override func viewDidLoad() {
        loadPage()
        //when printed here myArray is nil
    ...
    func loadPage() {
    ...
         Alamofire.request(url, method: .get, parameters: parameters, encoding: JSONEncoding.default)
        .validate { request, response, data in
    ...
         let databases = try  JSONDecoder().decode(responseData.self,from: json)
    ...
         for i in 0...databases.orders.count-1 {
            myArray.append(databases.orders[i].header!)
        }

    // when printed here I see the append has worked and myArray is not empty
    }

如 cmets 中所述,在 viewDidLoad 中,我调用 loadPage,将某些内容附加到 myArray。就在追加之后,我可以看到追加的项目。然而,在 viewDidLoad 中,就在调用 loadPage 之后,myArray 变成了空的。为什么没有保存?

【问题讨论】:

  • func loadPage() 是在进行异步调用吗?
  • 你忘了你的super.viewDidLoad()
  • 发布 loadPage 完整代码......
  • @Larme 我不是故意这样做的。是默认的吗?我应该如何预防?我假设代码像 C 代码一样流动。如果这是问题,Alamofire 有一个获取请求并解析其中的 json。
  • 您是否调用任何获取订单的网络服务???

标签: arrays swift append


【解决方案1】:

在for循环之后重新加载表格

for i in 0...databases.orders.count-1 {
   myArray.append(databases.orders[i].header!)
}       
self.tableView.reloadData()

【讨论】:

  • 谢谢! @Sh_Khan
【解决方案2】:

loadPage() 调用异步方法,因此 func 将在操作完成之前完成。大多数情况下,调用异步方法的funcs 应该有一个完成处理程序……

override func viewDidLoad() {
    loadPage {
        self.tableView.reloadData()
    }
}

func loadPage(completion: () -> Void) {

     Alamofire.request(url, method: .get, parameters: parameters, encoding: JSONEncoding.default).validate { request, response, data in

         let databases = try  JSONDecoder().decode(responseData.self,from: json)

         for i in 0...databases.orders.count-1 {
            myArray.append(databases.orders[i].header!)
        }

        completion()
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-25
    • 2016-01-23
    • 1970-01-01
    • 2015-10-11
    • 2015-08-21
    • 1970-01-01
    • 2019-12-30
    • 1970-01-01
    相关资源
    最近更新 更多