试图将作为参数传递的数组和对象变异为异步函数

时间:2017-02-09 04:25:00

标签: ios swift asynchronous mutating-function

因此,如果您查看下面的代码,您将看到以下行失败:

South

public function index() { $this->load->model('News_model');//loads your model $return = $this->News_model->get_new_news(); $data['theNews'] = array("All your base are belong to us!", "Autotune this news", "Numa Numa!!", $return ); $this->load->view('templates/news_header'); $this->load->view('new_items',$data); $this->load->view('templates/news_footer'); } 引起。我有一个服务文件,你在下面看到名为cannot use mutating member on immutable value: 'forecasts' is a 'let' constant ,我正在使用该函数从我的视图控制器中异步地从API中获取JSON。我试图将一个对象和一个对象数组传递给我想要变异的函数,这样我就可以使用视图控制器中的更新值来更新我的UI。我想构建预测对象并将它们推入我在视图控制器中初始化的数组。

关于如何解决这个问题的任何澄清都会很棒。

forecasts.append(forecast)

1 个答案:

答案 0 :(得分:0)

问题不是异步块,而是参数forecasts的机制。它在您调用函数时被复制,即使您将其声明为var也是如此。因为Array是Swift的价值类型,所以它是Swift的政策。 (https://developer.apple.com/swift/blog/?id=10) 您可以尝试在异步块之外调用forecasts.append,它仍然会失败。因此,您需要另一种方法将引用类型(而不是值类型)传递给函数。