因此,如果您查看下面的代码,您将看到以下行失败:
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)
答案 0 :(得分:0)
问题不是异步块,而是参数forecasts
的机制。它在您调用函数时被复制,即使您将其声明为var也是如此。因为Array是Swift的价值类型,所以它是Swift的政策。 (https://developer.apple.com/swift/blog/?id=10)
您可以尝试在异步块之外调用forecasts.append
,它仍然会失败。因此,您需要另一种方法将引用类型(而不是值类型)传递给函数。