【30日コーディング 9日目】9/30

今日やったこと

Udemy iPhoneコース

  • firebaseの使い方
  • クロージャーについて。
  • TableViewにCustomCellViewを適用する方法

今日学んだこと

【Swift】cocoaPodのエラー

cocoaPodを導入した後は必ずビルドすること。 ビルドしないと、謎のエラーが起きる

【Swift】Closuresについて

swiftで匿名関数を用いる時はClosuresを使う。 また、非同期処理を行う際にも使用する。

func calculator(n1: Int, n2: Int, operator: (Int, Int) -> Int) -> Int {
  return operator
}

func add(no1: Int, no2: Int) -> Int {
  return no1 + no2
}

print(calculator(n1: 10, n2: 20, add))

このような関数を考えた時、closureを使うとかなり簡略化できる。

{ (no1: Int, no2: Int) -> Int in
  return no1 + no2
}

print(calculator(n1: 10, n2: 20, { (no1: Int, no2: Int) -> Int in
  return no1 + no2
})

qiita.com

【Swift】autoLayoutによるレンダリングのタイミング

基本的には最初しか呼ばれない。 なので、view.layoutIfNeeded()を呼んで差分を再レンダリングする。

【Swift】textFieldDidEndEditing

textFieldDidEndEditingは、自動で呼ばれないのでどこかで呼ぶ必要がある。

感想

凄く長い講座だったので、1番優先にしてるアプリ作成で5時間くらい使った...。

集中力も欠けてきたが頑張った。 他のものが先がいいかもしれない...

【30日コーディング 7日目】7/30

今日やったこと

ポートフォリオ作成

レスポンシブ対応大変...。

今日学んだこと

【Web】Google Chromeにおける10px以下の表示対応

Google Chromeでは、10px以下にfont-sizeが表示できないのでtransform: scaleで対応する。

【Swift】クロージャ

Alamofireのリクエストの返し方

.request(~~~).response { res in }

が気になり検索。 inというのは関数内で関数を作る時に使用するみたい。 alamofireのresponseというのは、引数の型と返り値の値を省略したversion 返り値がない場合は型を省略できるらしい。

let hogehoge = { res in print(res) }
        hogehoge("hogehoge")

qiita.com

【Swift】クロージャーの中のself

クロージャーの中では、スコープが関数の中であるのでview controllerの中のfunctionを呼び出すことはできない。 呼び出す場合は明示的に"self"をつける。

【Swift】delegate

本来ならばそのクラスで処理するべきことを他のクラスに任せる時に使用する。

これだけで1記事書けそうなので詳細は省略。

qiita.com

【Swift】Optional Chaining

Optionalの値にメソッドを適用する時に、nulチェックをしてくれるもの。

blogios.stack3.net

【Swift】データを違うview Controllerに渡す際の注意点

segueで、遷移先のviewcontrollerに値を渡す際は新しくviewControllerのインスタンスを作っているので別物になってしまう。 これだと、dismissで戻った所でそのview controllerは新しく作られた別物になっている これを防ぐにはdelegateが必要。

感想

3時間も講座があったので長かった...

【30日コーディング 6日目】6/30

今日やったこと

Udemy iOS12コース

  • クラス周り
  • optionalとか

ポートフォリオ作成

今日学んだこと

【Swift】designate Initializeとconvenience Initialize

クラスの初期化を行う時に値を必ず入れなければいけないことを「designate Initialize」という。 日本語訳は指示付きの初期化。 対して、convenience Initializeは簡易的な初期化。 必ず呼び出す必要はない初期化。

qiita.com

【Swift】Methodとfunctionの違い

Methodとは、arcforrandomなど単発でできるもの。 functionとは、Classに紐付いたもの。

【Swift】Superクラス

superクラスとは、あるクラスを継承した時にその親となるクラスの別名。 superクラスのメソッドは上書きすることができる。(override) また、superクラスのメソッドを呼び出す時は、super.method()のように呼び出す。

疑問 多数のクラスの継承があった時、superに含まれるのは全てなのかな??

【Swift】Optional型

swiftはnilを許容しない。

var str: String 

この記述を許さないので、明示的にnilを許可する必要がある。

var str: String?

この時気をつけることは、Optional型にした値を使いたい場合は必ずそれを剥がす必要がある。

var str: String?
print(str!)

この時、strが入っていないとアプリが落ちてしまうので必要なのが、nilチェック。俗に言うOptional Binding。

// let構文
if let str = str {
}

// let guard構文
guard let str = str else {
}

違いは下記の記事を参照

qiita.com

感想

【30日コーディング 5日目】5/30

今日やったこと

1.Udemy iPhoneコース

Auto Layoutについて学んだ。 WWDCでSwift UIについて発表されたので意味無くなりそう。

2.

3.インターン

今日学んだこと

【Swift】Auto Layoutについて

諸々学んだ。

【Swift】Stack Viewについて

めちゃめちゃ便利

https://qiita.com/kinopontas/items/d08f84dbb711c5acbe28

感想

スキマ時間(電車の中)でのプログラミングがめっちゃ捗ることに気がついた。 これから電車で座れたら積極的にやったいきたい。

【30日コーディング 4日目】4/30

今日やったこと

Udemy iPhoneコース

www.udemy.com

webサイト案件

DNSの設定がうまく行かずカスタムドメインがうまくいかない...。 ヘルプ...

インターン

styled-componentのデザインパターンを学び直したけど、やり直したほうが良さそう

今日学んだこと

【Swift】.frame.size.widthと .frame.widthの違い

.frame.widthはgetterのため、値が取得のみになる

ios - Difference between frame.size.width and frame.width - Stack Overflow

【Swift】クラスの配列の定義の仕方

下記のリンク参照の通り色々な方法がある。

Swift - 【Swift】var cars = [Car]() ←クラス名が配列のように扱われている記述について|teratail

bash】ディクレトリー削除の方法

いつも忘れるのでメモ

rm -rf

感想

何故か集中ができた。 ハマっているゲーム(ダンジョンメーカーに飽きてしまったのかも。) やることを明確にして、ここまで終わらせると目標を立てると順調にできる。

【30日コーディング 3日目】3/30

今日やったこと

hogehoge

今日学んだこと

【Swift】Development infoについて

Landscape LeftとLandscape Rightにチェックを入れなければ横向きの状態を考慮しなくてすむ。

【Swift】MethodとFunctionの違い。

Methodとは、クラスに紐づくもの。 Functionとは、クラスに紐付かないもの。

【プログラミング】オブジェクト指向について

オブジェクト指向とは、それぞれのコードやクラスがもつ役割をはっきりさせてそこにはそこの分担を任せるというもの。 例えば、従業員が一人だけのレストランがあると仮定する。 その人は、シェフでもあいウェイターでもありレジ係でもあるので全ての仕事を一人でしないといけない。 もし途中でレシピを変更したい場合はその人の負担がかなり増す。 これだと良くないので、料理を作るのは「シェフ」料理を運ぶのは「ウェイター」と分担すると修正が入ったときもスムーズ。

感想

8:00 ~ 19:00で仕事だったため少ししか行えなかったが、ちゃんとできたので成長!