我試圖使用顯示在標籤的動態更新的數組:「無法下標類型的值‘[字符串]’與類型的索引‘字符串’
for i in result {
outputLbl.text = result[i].joinWithSeparator("\n")
}
但是我得到的錯誤
不能與類型的索引「字符串」下標型「[字符串]」的值。
任何想法,我怎麼能解決這個問題?
我試圖使用顯示在標籤的動態更新的數組:「無法下標類型的值‘[字符串]’與類型的索引‘字符串’
for i in result {
outputLbl.text = result[i].joinWithSeparator("\n")
}
但是我得到的錯誤
不能與類型的索引「字符串」下標型「[字符串]」的值。
任何想法,我怎麼能解決這個問題?
注意,使用循環「頭」 for X in Y
的時候,你沒有得到指數Y
,但實際元素Y
。從你的錯誤判斷,results
是一串字符串([String]
)。因此,在你for循環中表示---一個接一個--- String
數組中的元素results
。
所以,如果你想通過一個訪問字符串元素一個在for循環上面,你可以用你的榜樣的辦法:
let result = ["Hello", "World"]
for myString in result {
// use each string element in some manner...
}
然而,當您使用的是array
方法joinWithSeparator(..)
,你應該使用,就像獅子在他的評論中直接寫入上方,這個方法陣列上(而不是他們的元素!)
let result = ["Hello", "World"]
outputLbl.text = result.joinWithSeparator("\n")
/* Hello\nWorld */
這是怎麼回事是編譯器推斷i
爲String
,因爲那是result
。你的命名規則應該更加詳細。
for specificString in result {
outputLbl1.text += "\n\(specifcString)"
}
EDITED的正確性。
?????字符串沒有joinWithSeparator方法。順便說一句,我沒有downvote –
你是對的,我改變了,道歉。 – pbush25
結果似乎是'[String]',而不是'String'更不用說'+ = + ='可能不會做任何有用的事情,甚至編譯。 –
您收到此錯誤的原因如下:
似乎你混淆的i
類型。變量result
的類型爲[String]
,這意味着它是一個String
類型的數組。由於是一個數組,它必須使用Int
而不是String
作爲下標。所以像result[0]
或result[12]
是有效的,但類似result["hello"]
是無效的。變量i
這裏是String
,因爲它是String
類型的數組中的單個元素,這意味着有效地,通過說result[i]
所做的嘗試是沿着result["hello"]
行的。
之前已經說過,對於您的問題的真正解決方案是,方法joinWithSeparator(_:String)
不是String
方法,而是Sequence
類型的方法。這意味着它應該被稱爲Sequence
,就像[String]
類型的對象。所以,你應該用的是:
outputLbl.text = result.joinWithSeparator("\n")
我覺得你在這裏做什麼是試圖通過字符串數組迭代,然後更新一個標籤,在這種情況下「outputLbl」。在這裏,你可以做這樣的事情
for i in result {
//result is array of strings.
// here i is individual element of result array
/* outputLbl.text = result[i].joinWithSeparator(「\n」)*/
//instead you can write
outputLbl.text = i.joinWithSeparator(「\n」)
}
什麼是結果? – matt
'result.joinWithSeparator(「\ n」)' –
是'i'字符串類型嗎? – Breek