2015-04-15 193 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