質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

解決済

Swiftの配列を文字列に直したい

Suisoniumu
Suisoniumu

総合スコア14

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

2回答

0グッド

0クリップ

679閲覧

投稿2022/10/28 05:40

前提

swiftUIを用いたアプリ上でのエラーです。

実現したいこと

「Any」型の配列にある文字と数字をまとめて一つの文字列に代入したいです。
ソースコードでは、配列の要素を一つづつ取り出して文字列に追加しようとしているのですがうまくいきません。

発生している問題・エラーメッセージ

↓7行目 No exact matches in call to initializer ↓10行目 Binary operator '+=' cannot be applied to operands of type 'String' and 'Any'

該当のソースコード

swift

1let numList:[Any] = [1,"+",2] 2var numText:String = ""//nunListをつなげた"1+2"を得たい 3 4for i in 0..<numList.count{ 5 let ele = numList[i] 6 if(ele is Int){//要素がIntのとき 7 numText += String(ele)!//<-No exact matches in call to initializer 8 print("int") 9 }else{//要素がstringのとき 10 numText += ele//<-Binary operator '+=' cannot be applied to operands of type 'String' and 'Any' 11 print("string") 12 } 13} 14print(numText)

試したこと

配列の各要素に対して
numText += ele as! Int
としましたが、うまくいきませんでした

補足情報(FW/ツールのバージョンなど)

Xcode :Version 14.0.1
MacOS Ventura :version13.0

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

hoshi-takanori

2022/10/28 08:43

Any ってことは Int か String とは限りませんからね…。

回答2

0

入れ違いで解決しちゃったけど気にせずに‥

String(describing:)を使えば何かしらStringに変換してくれます。
cf. https://developer.apple.com/documentation/swift/string/init(describing:)-67ncf

swift

1for i in 0..<numList.count{ 2 numText += String(describing: numList[i]) 3} 4print(numText) 5//=> 1+2

一行で。

swift

1let numText = numList.map {String(describing: $0)}.joined() 2print(numText) 3//=> 1+2

投稿2022/10/30 05:02

fuzzball

総合スコア16727

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

Suisoniumu

2022/10/31 00:01

回答ありがとうございます

0

ベストアンサー

numList[i] はAny型なので、その値を代入した ele もAny型の変数として宣言されています。
ele に入っているものがInt型だと判定できたら、
ele をInt型にキャストした上で、Stringに変換する必要があります。

swift

1numText += String(ele as! Int)

ele に入っているものがString型だと判定できたら、
ele をString型にキャストした上で、String型のnumTextに連結する必要があります。

swift

1numText += ele as! String

投稿2022/10/29 01:40

編集2022/10/29 07:16
TakeOne

総合スコア6183

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

Suisoniumu

2022/10/30 04:43

できました。ありがとうございました。

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています