var arrayData : [String: String] = ["test1" : "TEST"]
arrayData["test2"] = "TEST2";
などと指定し、値を入れられるのですが、中には数字の時もあるのですが、その場合はどのようにすればよいでしょうか?
又は、こういった、文字列と数字が混ざった連想配列はSwiftでは無理なのでしょうか?
arrayData["money"] = 120;
値の型をAnyObject型にすればOKです。
var arrayData : [String: AnyObject] = ["test1" : "TEST"] //成功
arrayData["test2"] = "TEST2"; //成功
arrayData["money"] = 120; //成功
「AクラスのインスタンスとBクラスのインスタンスをひとまとめにしたい」(中略)
そんなとき、助けてくれるのが AnyObject です!これはオブジェクトであればなんでも保管することができます。
[Swift]AnyObjectとAnyと総称型(T)の違いをメモったよ! - Qiita
初期化であれば以下のように書けます。
var arrayData = ["test1": "TEST", "money":120]
Swift では Dictionary と言います。
いわゆる他の言語の連想配列と同じにするのであれば値の方をオプショナルにしておく方が良いかもしれません。
var arrayData : [String: AnyObject?]
用途がよくわかりませんが、文字列として扱う変数ならば "120"というように
文字列として セットすればよいのでは ないでしょうか?
もし、その変数に文字列が入っている場合、数値として扱おうとすると
おかしなことになってしまうはずです。
つまり、今、文字なのか数値なのかを 判定する別のフラグが必要となるわけです。
数値ならば数値型、文字ならば文字型の変数に格納したほうが
よりプログラムが わかりやすいものになると思いますよ。
特に 自分で作ったプログラムでも 数か月たつと 忘れてしまうものです。
あとで 見返してメンテする時の負担も減るはずです。
コメント(0件)