2015-04-15 153 views
1

我创建了一个多维数组,它假设持有新闻的不同部分,例如热门和最近的新闻。因此,我创建了一个这样的数组,其中News是我的课程。将数组追加到多维数组

var arrayNews = Array<Array<News>>() 

此后,我正在通过我的第一个JSON文件循环这样

for (key: String, subJson: JSON) in jsonArray { 
     // Create an object and parse your JSON one by one to append it to your array 
     var newNewsObject = News(id: subJson["id"].intValue, title: subJson["title"].stringValue, link: subJson["url"].stringValue, imageLink: subJson["image_url"].stringValue, summary: subJson["news_text"].stringValue, date: subJson["date"].stringValue) 


     arrayNews.append(newNewsObject) 
    } 

但是我得到以下错误,当我尝试将其追加到数组?

cannot invoke append with an argument list of type (News) 

测试回答

var arrayNews = Array<Array<News>>() 
let recentArray = [News]() 

    for (key: String, subJson: JSON) in jsonArray { 
     // Create an object and parse your JSON one by one to append it to your array 
     var newNewsObject = News(id: subJson["id"].intValue, title: subJson["title"].stringValue, link: subJson["url"].stringValue, imageLink: subJson["image_url"].stringValue, summary: subJson["news_text"].stringValue, date: subJson["date"].stringValue) 


     recentArray.append(newNewsObject) 
    } 

    arrayNews.append(recentArray) 

错误信息

immutable value of '[(News)] only has mutating members named append 

回答

5

随着

var arrayNews = Array<Array<News>>() 

声明,你将有数组阵列。

但是,然后你追加一个News对象,这不是一个数组的新实例。

所以你应该改变你的arrayNews变量是News对象的数组:

var arrayNews = [News]() 
+0

我已经添加了对我的问题的答案的测试,我得到一个新的错误 –

+1

因为你使用'let ',它声明了一个* constant *,你不能修改。你应该使用一个变量('var')来代替。 – Moritz

4

arrayNews预计Array元素,但你为它提供一个News元素。

您可以使用当前部分阵列的下面创建,然后将其添加到您的多维数组:

let sectionArray = [News]() 
sectionArray.append(newNewsObject) 
arrayNews.append(sectionArray) 
+0

sectionArray.append(newNewsObject) arrayNews.append(sectionArray)应该他们都在循环? –

+0

合乎逻辑地说,没有,节数组应该在循环中,然后添加到此循环外的主数组 – giorashc