平々凡々エンジニア

平凡で難しい悩みを解決

たまに使う stride

strideとは

語源 歩 大股でまたぐ swiftでは指定範囲の値作成メソッド

使い方

0から9を作成

toは含めないことに注意

stride(from: 0, to: 10, by: 1).forEach { val in
 print(val)
}

0
1
2
3
4
5
6
7
8
9

0から10まで1.5刻み

stride(from: 0, to: 10, by: 1.5).forEach { val in
 print(val)
}
0.0
1.5
3.0
4.5
6.0
7.5
9.0

刻みで出力したいときは便利ですね

guard let ってなれたら読みやすいね

guard let とは

僕は最初ifの逆バージョンだと思って使用していたのですがそのような考え方だとめっちゃ読みにくくて考え方おかしいと気がつくまで時間かかりました。
guard はifの逆ではなく文字通りガードしたい条件がきたら処理するという意味のものになります。
guardにletを付け加えることにより宣言しながらエラーやアンラップの条件を記載することで可読性が向上します。

使い方

変数をアンラップしてguardブロック以降のスコープで利用する。

アンラップした変数をスコープ外で利用したい時

guard let url = NSURL(string: coverPath) else { // NSURL.init?(string URLString: String)
    abort()
}

if imageManager.cachedImageExistsForURL(url) { 
    省略...

早期リターンとしての利用

条件を満たしてなかったら即リターン

private func deleteDownloadTask() {
    guard let realm = self.realm() else {
        return
    }

    try! realm.write {
    // realmを使ったなんらかの処理
    }
}

あと他にもありそうですが自分が使用しているのはこんなところで基本的なものだともいます。

apiを確認する(テストする)

基本的にはpostmanを利用しています。

以下使い方はこちらの方が参考になります。

気をつけるべき点としてはwebのpostmanではセキュリティ問題でうまくAPIが帰ってこないことがあるので必ずアプリをダウンロードして行いましょうね。

qiita.com

realm そんなに難しくなかったが 実際は...

realmと書いてレルムと読むそうです。
一通りは以下の記事で勉強しました。かなりうまくまとめられていて自分が解説するところは特にないです。
qiita.com

もの自体はすごくシンプルでスマートフォン向けのDB。
keyとvalueで構成されるだけ。
swiftで書かれたオブジェクトをDBにするという感じ。
入れ子にすることができる。
とこれぐらいしか特徴がないので実用もよういだろうと思っていたがそんなことはなかった。業務で作成された入れ子入れ子を重ねたDB設計でDBの中を見ただけでは何がなんだかわからないし、コードに書いたものも行が長くて読みにくい上いろいろなオブジェクトがあって可読性がなさすぎて苦戦した。
前任者がいないので解読するだけで数日かかった。
資料も何もないのでそれも原因でした。
DB設計は後々改修とか入るとかなりきつい部分なので資料の作成や他人にちゃんと見せれるようにかけるよう勉強していきたい!!

swiftは++演算はないんですよ

ほかの言語ではよく変数に1プラスするときに++使用しますね。 しかしswiftではありません。 その理由は

'''swift let a = x++; let a = ++x; ''' のようにインクリメントの可読性がないからです。 だからfor文に++は使われてないんですね。(Swift 2までは++ありました) '''swift for i in 0..<10 { // 処理 } '''

抜歯

抜歯を行いました。

抜歯したのは親知らずでかなり入り組んで取りにくいところにあったようで

抜くのに三十分以上かかりました。痛みと発熱がすごく休日は寝込んでいました。

現在はある程度引きましたが未だに痛みがありあまり集中できない日々が続きそうです。

毎日ブログを書くようにしようと思う。

ブログは自分の成長のために書こうと技術的なことしかかかないつもりだったが記載する時間がなかったり記事になるようなことがなかったりしたときブログを書かないのはブログを書くという作業について大きいなストレス要因を感じると思いました。

どんな内容でもよいのでブログを書くということを習慣かすればそのストレスを無くせると思ったので本日から毎日なんでもいいのでブログを書くようにしようと思います。