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

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

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

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

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

1回答

2997閲覧

Optionalと宣言すれば、使えないメソッドが生じる

YosukeNakayama

総合スコア80

Swift

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

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2016/01/29 06:56

編集2016/01/29 09:11

下記のコードをまず見ていただきたいのですが、
case1は通常通り宣言し、空配列を入れており ,
case2はOptionalで宣言してあります。

Optionalにて宣言した場合、appendが使えないのは何故なんでしょうか?
Optionalであるから、ArrayやStringのクラスのメソッドは使えないのかなと思ったのですが、first、lastなどのメソッドは使用できるようでエラーはありません。

Optionalへの根本的理解が足りてないのかと思いますが、、

基礎的な質問で申し訳ないです、ご回答よろしくお願い致します

swift

1var dictionary: [String:String] = ["name": "nanashi", "age" : "30", "live" : "Japan"] 2 3 4//case 1 5var test :[String] = [] 6 7 8----修正前---- 9//case 2 => error : [String]? has no member 'append' 10var test :[String]? = [] 11 12 13----修正後---- 14//case 2 => error : [String]? has no member 'append' 15var test :[String]? = [] 16 17//case 3 18print(test?.first) 19 20//辞書をループで回し、valueを test配列に入れる。 21for (key,value) in dictionary { 22 test.append(value) 23 24} 25 26print(test)

追記 再現できていなかったので、もう一度編集します。
----修正後----
だと、print(test)がnilになってしまいます。
それはなぜでしょうか。

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

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

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

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

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

guest

回答1

0

test?.firstと同じように、test?.append(value)と書いてください。

投稿2016/01/29 08:32

Stripe

総合スコア2183

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

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

YosukeNakayama

2016/01/29 09:09

すいません、コード間違えてました var test :[String]? = [] ではなく、 var test :[String]? でやるとprint(test)がnilになります。
Stripe

2016/01/29 09:29

testの初期値が「無い」ので、nilです。
Stripe

2016/01/29 09:30

nilに対するappendは無視されます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問