2016-03-05 37 views
2

我正在製作一個應用程序,當您按下一個按鈕表示它很緊急時,會有一個標籤顯示爲「URGENT」。就在我實現與按鈕的用戶交互之前,我有一個數組(如下所示),其中一些對象具有urgent = true,但有一些具有urgent = false,所以我可以從我的代碼開始。錯誤:無法爲類型'inout [Agenda]'(aka'inout Array <Agenda>')下標值'

的陣列,其是在MainTableViewController.swift

var content:[Agenda] = [ 
    Agenda(subject: "Read this article", deadline: "1-2 days", urgent: false), 
    Agenda(subject: "Respond to this email", deadline: "ASAP", urgent: true), 
    Agenda(subject: "Add this to diary", deadline: "When at home", urgent: true), 
    Agenda(subject: "Listen to this song", deadline: "When finished working", urgent: false), 
    Agenda(subject: "Check out this holiday destination", deadline: "At the weekend", urgent: false), 
    Agenda(subject: "Download this podcast", deadline: "1-4 days", urgent: false), 
    Agenda(subject: "Update notes", deadline: "When at home", urgent: true) 
] 

然後,我有一個名爲Agenda.swift類,其中我聲明subjectdeadline,並urgent

這裏就是我展示了「緊急」或不代碼:

if content[indexPath.row].urgent = true { 
     cell.urgentLabel.text = "URGENT" 
    } else { 
     cell.urgentLabel.text = "" 
    } 

在第一行,我得到以下錯誤:

Cannot subscript a value of type 'inout [Agenda]' (aka 'inout Array')

+0

如果content [indexPath.row] .urgent = true {'應該是'if content [indexPath.row] .urgent {' – dan

+0

或==而不是=(賦值語句在Swift中什麼都不返回) –

+0

@VinceBurn謝謝:) –

回答

6

這是典型的賦值運算符(= )與方程運算符(==)混淆。

+0

完美!謝謝。 –

+0

我的這個錯誤的解決方案是,我需要將一個Int轉換爲字符串 –

+0

謝謝。我試圖使用所有東西的「+ =」! –

1

正如在評論部分解釋,這條線

if content[indexPath.row].urgent = true { 

試圖設置緊急的價值,而不是檢查的緊急值。

如果你想使用這個模式,你只需要增加一個額外的等號(=)

if content[indexPath.row].urgent == true { 

也,if語句將評估一個布爾值直接,所以你甚至不需要比較

if content[indexPath.row].urgent { 
+0

感謝您的貢獻。 –

0

對於Swift3問題:我有它不具有

as [String:Any] 

字典最後,編譯器告訴我,我不能標註一個inout對象。補充說,最終和繁榮,解決了。

4

我剛剛遇到了同樣的錯誤,當我將一個數組作爲參數值添加到具有不正確簽名的方法時。也就是說,其中一個參數標籤是錯誤的,但編譯器將該錯誤報告爲無法爲數組下標。一旦我將數組訪問從方法調用中拉出,就會顯示真正的錯誤。

相關問題