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

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

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

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

Q&A

解決済

2回答

6458閲覧

【swift】変数が存在するかどうかの判別がしたい

nyancoro

総合スコア75

Swift

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

0グッド

0クリップ

投稿2015/06/01 02:49

swiftで変数が存在するかどうかの判別をし、存在する場合にのみ処理を行いたいと思っています。
(phpでいうところのisset的な感じです。)

たとえば以下のコードで、
paramsに変数name, birthの値がセットされている場合のみ何らかの処理を行うには、
どのように書けばいいでしょうか?

lang

1var name:String = "" 2var birth:String = "" 3 4・・・ 5 6var params: [String: AnyObject] = 7[ 8 "name" : name, 9 "birth" : birth, 10]

よろしくお願いします!

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

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

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

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

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

guest

回答2

0

Optional型を使ってnilか否かで判定するといいと思います。
nilというのは何も値がない状態を示すものです。
Swiftでは通常、変数にnilを代入することができませんが、Optional型を使えばnilを利用することができます。
例えばこんな感じでしょうか。

lang

1 var name:String? = nil 2 var birth:String? = nil 3 4 name = "hoge" 5 birth = "hage" 6 7 if let name = name, let birth = birth { 8 println("nameは\(name)です。birthは\(birth)です") 9 } else { 10 println("nameかbirthがセットされてません") 11 }

上記はOptional型を扱う上で便利なif let xxx という構文を用いていますが、単純に

lang

1 if name != nil { 2 println("nameは\(name!)です") 3 }

とかでも良いと思います。
ただし、この場合はOptional型のアンラップ(びっくりマークの部分)を忘れずに^^/

投稿2015/06/01 05:36

jollyjoester

総合スコア1585

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

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

nyancoro

2015/06/04 09:14

勉強になりました! ありがとうございました^^
guest

0

ベストアンサー

質問において、”paramsに変数name, birthの値がセットされている場合のみ”を処理させる例です。

lang

1 var name:String = "" 2 var birth:String = "" 3 var params: [String: AnyObject] = ["name" : name,"birth" : birth] 4 if let name0 :AnyObject = params["name"],birth0 :AnyObject = params["birth"] 5 { 6 println("YES") 7 8 if count(name0 as! String) != 0 && count(birth0 as! String) != 0 { 9 //2つとも1文字以上 10 println("YES") 11 } 12 }else{ 13 println("NO") 14 }

""の指定は、swiftではnilではありませんので、二段階の判定が必要なはずです。

投稿2015/06/01 05:19

nazaka

総合スコア44

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

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

nyancoro

2015/06/04 09:16

//2つとも1文字以上 こういう処理の仕方もあるんですね! 二段階の判定、非常に役立ちました。 ありがとうございます★
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問