コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

すいふと! その1

今月も何か成し遂げた(自己満足)という記録を残していきます

先月ぐらいにSwiftいじるとか言っていた気がしたんですが全くいじっていないことに気づいてしまったのでちゃんといじります。言い訳させてもらいますと僕が普段WindowsばっかいじっててMacをいじる機会がそんなになかったから…………。


はい、今からこれ(FoodTrackerアプリ制作)やります
Start Developing iOS Apps (Swift): Jump Right In

The lessons were written using Xcode 8.1, iOS SDK 10, and Swift 3. Try to use these versions while working on the tutorials. If you are using a different version, your screen may look different than what is shown in the screenshots. You may also need to make changes to your code to get it to compile.

資料が古いので実行環境はこんな感じになってます。Swift 3は今だとちょっと古い気がするので、Swift 5で動くように書き変えながらやっていこうと思います。

f:id:andron:20190723172921g:plain


Build the UI編

別に分割する必要は全くないんですけど、Swift 3 からSwift 5にするのに書き換えが発生してしまったのと僕の思っていたよりも知見があったので分割することにしました。あとスクショした画像が重すぎるから……。

んで、フォトライブラリから画像を取得する処理でエラー出たんで以下に書き替えました。

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { 
        guard let selectedImage = info[.originalImage] as? UIImage else {
            fatalError("Expected a dictionary containing an image, but was provided the following: \(info)")
        }
        photoImageView.image = selectedImage
        dismiss(animated: true, completion: nil)
    }

とりあえずこれで変更してみる。guard let(nil絶対許さない文法)とかの書き方はアプリ作りしないと得られない知識な気がする。


そんでこんなんできます。
f:id:andron:20190723175148g:plain
圧縮しすぎて汚くなってしまった……。


あ、あと普段テストとか書かずに巨大なメイン関数ばっかり作る人だから意識しなかったけど、テストの書き方講座もついてたからやってみた。
f:id:andron:20190723173128g:plain
普通に実行するだけでメソッドごとにチェックしてくれる(上のはクラスですが……)。いいね……。

参考:XCTest
XCTest | Apple Developer Documentation
なにができるかよくわからないけど、とりあえず「Test Assertions」あたりを読んでおけば大体なんとかなるんじゃね(楽観視)。


まあいいや。そんな感じでBuild the UI編(編集画面)やりましたので次回はWorking with Table View編(全体リスト)やっていこうと思います。まあ例のごとく続きは未定です。とりあえず今月iOS周りでなんかやったっていう気持ちになったのでこれで……。

本当はオリジナルでなんかアプリつくりたいなーってのはあるんですよ。けどもネタとお金がね……、ないんですよ……。悲しいなあ。


おわり