Swiftの連想配列で質問です。


var arrayData : [String: String] = ["test1" : "TEST"]
arrayData["test2"] = "TEST2";

などと指定し、値を入れられるのですが、中には数字の時もあるのですが、その場合はどのようにすればよいでしょうか?
又は、こういった、文字列と数字が混ざった連想配列はSwiftでは無理なのでしょうか?

arrayData["money"] = 120;

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2015/07/14 22:40:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:jan8 No.1

回答回数456ベストアンサー獲得回数96

ポイント67pt

値の型をAnyObject型にすればOKです。

var arrayData : [String: AnyObject] = ["test1" : "TEST"] //成功
arrayData["test2"] = "TEST2"; //成功
arrayData["money"] = 120; //成功

「AクラスのインスタンスとBクラスのインスタンスをひとまとめにしたい」(中略)
そんなとき、助けてくれるのが AnyObject です!これはオブジェクトであればなんでも保管することができます。
[Swift]AnyObjectとAnyと総称型(T)の違いをメモったよ! - Qiita

id:alfa-gadget No.2

回答回数254ベストアンサー獲得回数50

ポイント67pt

初期化であれば以下のように書けます。

var arrayData = ["test1": "TEST", "money":120]

Swift では Dictionary と言います。
いわゆる他の言語の連想配列と同じにするのであれば値の方をオプショナルにしておく方が良いかもしれません。

var arrayData : [String: AnyObject?]
id:taknt No.3

回答回数13539ベストアンサー獲得回数1198

ポイント66pt

用途がよくわかりませんが、文字列として扱う変数ならば "120"というように
文字列として セットすればよいのでは ないでしょうか?

もし、その変数に文字列が入っている場合、数値として扱おうとすると
おかしなことになってしまうはずです。

つまり、今、文字なのか数値なのかを 判定する別のフラグが必要となるわけです。

数値ならば数値型、文字ならば文字型の変数に格納したほうが
よりプログラムが わかりやすいものになると思いますよ。

特に 自分で作ったプログラムでも 数か月たつと 忘れてしまうものです。
あとで 見返してメンテする時の負担も減るはずです。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません