will and way

ただの自分用メモを人に伝える形式で書くことでわかりやすくまとめてるはずのブログ

iOS

CIを前提としたプロジェクトのテンプレートができてた話

これはiOSアドベントカレンダーの10日目の記事です。 私にとって今年は、iOSエンジニアに転向した年でした。 それまではAndroid。 そして、携わっているプロジェクトのSwift化(未完)だったりiPhoneX対応だったりと劇的な半年でした。 ほぼゼロから始めたので…

Lottieで再生するアニメーションを作って読み込ませるまで

blog.matsuokah.jp ↑の記事は、Lottieを使ってアニメーションの再生をするところを実装しました。 実はハンバーガーアイコンのアニメーションには大きな余白が含まれていて このまま使うとアイコン自体が非常に小さい表示になってしまっていました。 という…

Lottieことはじめ

Lottieとは Airbnb謹製のアニメーションツールでAfterEffectsでexportしたアニメーションをiOS、Androidで再生できるというすぐれものです。 上記のGIFはlottie-iosより転載 僕自身はこういうアニメーションはあまり好きではないのですが、 味気なさがなくな…

アクションシートのクロージャをObservable化して処理を一本化する

アクションシートってよくつかわれるんですかね? 私が携わっているプロジェクトではそこそこ使われています。 コレです アクションシートの基本的な使い方 let actionSheet = UIAlertController(title:"Title", message: "Message", preferredStyle: .actio…

DecodableのDecodeを簡潔に書きたい

Swift4でDecodableつかってますか〜? 公式にサポートしてもらえると本当にありがたいですよね。 しかしながら汎用的なパースをしようとすると若干、コードが冗長になります Encoding and Decoding Custom Types | Apple Developer Documentation 公式ドキュ…

汎用的なAPIClientの設計と実装

TL; DR Swift4でDecodableを使いつつ、 フレキシブルなAPIレスポンスの設計をしていったら結局APIクライアント書いてたという話。 その設計・実装の流れを綴りました。 長くて読みきれないっていう場合はソースコード読んでもらったほうがいいと思います。 g…

Swift4のDictionaryのアプデの目玉が公式ブログ?に掲載されてたので読んでみた

原文はこちら Swift4ではDictionaryがより便利に使えるようになっているということで サンプルを見ていく Grouping Values By a Key Swift3系では グループ機能がなく、かなりの手順を要していた // Swift <= 3.1 var grouped: [GroceryItem.Department: [Gr…

RxCocoaのUITableViewのbind(to: )にRegistrableを使って処理の簡略化

前提 qiita.com Registrable型に則ればあとは型推論によるextensionの実装で済ませようというアプローチです キャストが失敗したら?だったり、各型のIdentifierを取得する手間をextensionに閉じ込めることができるので、 シーケンスに集中することができる…

objc_getAssociatedObject で必ずnil返ってくる件(解決済み)

blog.matsuokah.jp こちらのエントリーでExtensionPropertyをExtensionとしてつけるだけでassociated objectにアクセスしやすくするというエントリーを書きました しかしながら、この記事にはバグがありました。 それは getProperty が必ずnilになってしまい…

UserDefaultsをSwiftのEnumで扱えるように拡張する

UserDefaultsって便利ですよね。 基本的にはユーザーのアプリ内の設定値保存に使うことを主としていますが、 キルされても保持したいけど、アンインストール→インストールでは消されてもいい。DBを作るまでもないといった 値の軽いキャッシュとして利用した…

UIScrollViewのページングをライフサイクルとして扱えるようにする

もっといいタイトル無いだろうか・・・笑 利用用途 UIViewControllerのviewをページとしてUIScrollViewにマウントしておいて、スワイプで切り替えて使うみたいな想定です。 UIScrollViewでページャーのviewDidAppearみたいなライフサイクルがあれば表示され…

SwiftでExtensionのプロパティの黒魔術感をなくす(追記アリ)

SwiftでExtensionに追加するプロパティの黒魔術感が異常。 クラス全体には関係ないけど、特定のextension内に閉じ込めたいpropertyが欲しくなることがあると思います。 しかし、Swiftではextensionローカルなプロパティを持とうとするとobjc_getAssociatedOb…

Alamofireでパラメータをenumで扱えるようにする

github.com Alamofireといえば、言わずと知れたSwift界のHTTPクライアント。名前の由来はテキサスの花の名前らしいすね。 今回はAlamofireのリクエストパラメータをenumで扱うという話。 大前提。Stringは脆い! Stringはすべての表現を兼ね備える万能な型で…

Swiftをせっかく使うならProtocol Oriented Programmingしたい

まえがき 6月からAndroidエンジニアからiOSエンジニアになり、Objective-CをSwift化するプロジェクトをやっている。 iOSはiOS5,6時代に開発した経験はあるがSwiftは0からということで、最近色々記事を読んでいた。Swiftいいですね。僕は好きです。 その中でW…