Catch Questionsアカデミー第10回
Swift5.1 Xcode11.1 Storyboard
-配列の並び替えに必要なsort
-配列のCSV化に使えるjoin
-配列の重複確認に便利なfilter
「以下は動画のハイライトです。」
前回の続きの動画です。
Swiftの配列について全くわからない方は前々回の動画からご確認ください。
今回は配列操作の応用編となります。
まず単語帳など作成するアプリを想定して必要な機能を思い浮かべてみてください。どういうデータを実際iPhoneへ保存しておいたら良いでしょうか。
一般的な単語帳アプリへのご要望として以下のようなものがあります。
1. 覚えたものを削除したい
2. アイウエオ順に並べたい
3. データをエクセルなどに出力したい
4. 重複していたものは無駄に追加したくない
これらを解決すべく、まずPlaygroundで基本的な構文を確認することから始めましょう。
まず配列から特定の要素を削除するにはremoveといった機能が有効です。
配列の変数の後にドットを打って以下のように書きます。
strList.remove(at: 1)
実は変数の後にこのようにドットを打つことでXcodeから既に提供されている機能を色々と使わせてもらえます。何となくドットを打って動詞系の英単語を打つと推奨の動作機能が出てくるので便利です。
atの後の数字は配列の番号を指定しております。この箇所でどの要素を削除するかの判断材料になりますので、この数字を色々と変えてみて動作を確認してみましょう。
次に並び替えについて確認したいと思います。
.sorted()という機能を使うと配列をあいうえお順に並び替えることができます。
var strList = ["あ", "え", "う", "お",
"い"]
var newStrList = strList.sorted()
print(newStrList)
これを利用して果物を並び替えてみましょう。
並び替えたデータを今度は出力してみたくなりますね。
エクセルなどのデータに反映することを将来考えるのであればデータをCSV形式にするのがオススメです。
CSVデータへの出力は以下のものが使えます。
var str = strList.joined(separator: ",")
これで出力するとカンマ区切りの文字列データとしてstrに反映されます。
ちなみにダブルクオテーションの箇所を"+"などとするとプラス区切りのデータとして扱えます。
最後に重複要素の確認です。
単語帳に新しい単語を登録した際、既にそれが登録済みかどうか確認したいですよね。
そこでオススメな機能が.filterです。filterの書き方は非常に難しく何で$0など登場するの?など考えると切りがなくなりますが以下の"バナナ"と記載してある文字が今回の配列strList内で重複しているか確認するためのもの程度に覚えていただけると幸いです。
let ans = strList.filter{$0 == "バナナ"}
重複があるとansという変数へ配列として"バナナ"が追加されます。二つ"バナナ"があれば二つの"バナナ"がansに追加されます。
この独特な動きを逆に利用すると重複していないか確認することができるのです。つまりansの配列が空の配列を返すようだったら重複はなしと判断できるのです。コードとして書くと以下のようになります。
if ans == [] {
print("重複してません")
} else {
print("重複してます")
}
以上で文法的な復習を終わります。次の動画で実際にXcodeで実装してみましょう。
ソースコードは YouTubeのコメント欄 に記載します。
目次へ戻る