2017-08-19 10 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

それは印刷ではあるが、' targetLabel.text = String(description:tar) 'の中にある'シミュレータのオプションテキストを取得する、ラベルのテキストに印刷する方法は? @ luk2302 –

+0

'tar'の種類は何ですか?変数の '.description'プロパティを使うだけなので、' String(describe:) 'を使用して文字列を初期化しないでください。 –

答えて

1

「オプション」は、ラベルのtextプロパティがタイプString?であることに由来します。印刷する際には、その内容を安全に元に戻す必要があります。 nil合体オペレータ??を使用するとうまくいきます。 、スペースで区切られただけのアレイ項目を取得[String]に文字を変換するmap { String($0) }を使用し、最終Stringを形成するために一緒に要素を結合するためにjoined(separator: " ")を使用し

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() 'と書くとエラーが出ます: String.Type.init 'の候補が予想される文脈の結果の型をプロデュースする'(Character)throws - > _ ')@vacawama –

+0

Hmmm。 String.initは私のために働く。マップ{String($ 0)}を試してみてください。 – vacawama

+0

ありがとう、今は動作していますが、私は4つのラベルを持っています。 @vacawama –

関連する問題