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


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

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

arrayData["money"] = 120;

回答の条件
  • 1人1回まで
  • 13歳以上
  • 登録:2015/07/07 22:37:44
  • 終了:2015/07/14 22:40:03

回答(3件)

id:jan8 No.1

jan8回答回数454ベストアンサー獲得回数962015/07/08 00:59:56

ポイント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

alfa-gadget回答回数254ベストアンサー獲得回数502015/07/08 10:28:05

ポイント67pt

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

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

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

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

きゃづみぃ回答回数13539ベストアンサー獲得回数11982015/07/08 11:31:40

ポイント66pt

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

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

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

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

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

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません