2017-08-19 55 views
-5

如何使用Swift 3刪除可選項並將其轉換爲自然字符數組?從字符數組中刪除可選 - Swift 3

這是我的代碼:

for data in listdata { // listdata is (Database) has a variable (ans) 

    let tar = data.ans.characters.map({$0}) 

    lblLabel.text = String(describing: tar) 

} 

print(lblLabel.text) 

我的輸出: Optional("[\"A\", \"B\", \"C\", \"D\"]")

而且我想我在lblLalbel輸出和添加文本轉換沒有可選的陣列像這樣:

A B C D

我該怎麼做?

+0

'打印(lblLabel.text !)' – luk2302

+0

它在print中工作,但是在'targetLabel.text = String(描述:tar)'讓我在模擬器中使用可選的文本,我怎麼能在標籤文本中打印? @ luk2302 –

+0

「tar」的類型是什麼?並且不要使用String(描述:)來初始化一個String,因爲它只是使用變量的'.description'屬性。 –

回答

1

「可選」來自標籤的text屬性類型爲String?的事實。打印時需要安全地打開包裝;使用無合併運算符??很好地工作。

得到的只是用空格分隔的數組項,使用map { String($0) }的字符轉換爲[String],然後使用joined(separator: " ")的元素結合在一起,以形成最終的String

for data in listdata { // listdata is (Database) has a variable (ans) 

    let tar = data.ans.characters.map { String($0) } 
    // Swift 4: let tar = data.ans.map(String.init) 

    lblLabel.text = tar.joined(separator: " ") 

} 

print(lblLabel.text ?? "") // "A B C D" 
+0

當我寫'String.init'時出現錯誤:(模糊使用'init'),以及寫入String.init()時出現錯誤:(No' String.Type.init'候選產生預期的上下文結果類型'(Character)throws - > _')@vacawama –

+0

嗯。 String.init爲我工作。試試地圖{String($ 0)}。 – vacawama

+0

謝謝,現在它正在工作,但我有4個標籤,我想添加每個標籤只有一個字符我該怎麼做? @vacawama –