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

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

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

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

Q&A

解決済

2回答

3137閲覧

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

Suisoniumu

総合スコア14

Swift

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

0グッド

0クリップ

投稿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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2022/10/28 08:43

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

回答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

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Suisoniumu

2022/10/31 00:01

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

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

総合スコア6299

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Suisoniumu

2022/10/30 04:43

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問