人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

arrayData["money"] = 120;

●質問者: makocan
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● jan8
●67ポイント

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

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

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


2 ● alfa-gadget
●67ポイント

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

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

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

var arrayData : [String: AnyObject?]

3 ● きゃづみぃ
●66ポイント

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

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

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

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

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

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ