无法更改闭包中的struct实例值

时间:2019-04-04 15:39:29

标签: swift

我有一个名为users的结构实例,我通过闭包将JSON解析为该实例,但是我发现我的编辑根本没有保存。因此,当我超出关闭范围时,我将为零。有人知道如何在闭包中获取价值吗?

var users: [User]! = [User]()

override func viewDidLoad() {
        super.viewDidLoad()

        Alamofire.request(url2).responseJSON { response in
            switch response.result {
            case .success(let value):
                guard let jsonArray = value as? [[String: Any]] else { return }
                self.users = jsonArray.compactMap(User.init)
                print(self.users!) // works
            case .failure(let error):
                print(error)
            }
        }

        print(users!) // error because I had nil
}

1 个答案:

答案 0 :(得分:1)

提出请求需要时间。为了避免整个应用程序冻结,即使尚未收到服务器的响应,该请求也会在后台发送,并且程序将继续执行。

一种解决方法是在数据加载后在回调中调用单独的函数。可能如下所示:

$result = mysqli_query($con,"SELECT * FROM dados");

echo "<table border='2'>
<tr>
<th>nome</th>
<th>Idade</th>
<th>Email</th>
</tr>";

while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['nome'] . "</td>";
echo "<td>" . $row['idade'] . "</td>";
echo "<td>" . $row['email'] . "</td>";

echo "</tr>";
}
echo "</table>";