eureka Meetup #03 -WWDCレポート iOSエンジニア-
結構すごいと思う。 どこまで使えるか気になったので調べた muukii/JAYSON を作ったりもしているし、みなさんもいろいろな方法で迷ったりしていると思う。 それらはdecodableで置き換えられるのか #eureka_meetup
2017-06-15 20:10:24Keyが違ったり、形が違う時はどうしたら良いのか。 Keyのリマップには対応している。CodingKeyプロトコルを使う。 階層を変える場合も init(from:)にdecoderが渡されるので、そこで自分で書く #eureka_meetup
2017-06-15 20:11:28デフォルトの実装で済むならCodableでいいんだけど、CodingKeyを書かなきゃいけないような状況だと、既存ライブラリから移行するメリットはないんだよね。ライブラリが剥がせるぐらいかな。 #eureka_meetup
2017-06-15 20:12:06Sample Codeがある PlaygroundでネストJSON階層のカスタムマッピングがある。 archives_and_serialization らへん #eureka_meetup
2017-06-15 20:12:18Decodeする時にthrowされるが、どこまで情報がと’れるのか。 DecodeingErrorがThrowされる。 DecodingErrorは4タイプ持っている。 #eureka_meetup
2017-06-15 20:14:01keyNotFound, typeMismatch(Bool宣言がJSONではStringだったり), valueNotFound(nullも), dataCorrupted #eureka_meetup
2017-06-15 20:14:04keuNotFoundのdebugDescriptionには何のKeyが見つからなかったのかとか出てくる。 codingPathは配列で、JSONの構造上どこまで進んだところで問題が起きたか辿れる。 #eureka_meetup
2017-06-15 20:15:25typeMismatche(let type, let context) debugDescription "String but found a number” context.codingPathで同様にどこまで行ったところか辿れる #eureka_meetup
2017-06-15 20:16:50.keyNotFoundって、(多分そんなとAPI使ってる会社はないと思うけど)APIをバージョン管理してないと、フィールド追加するとき古いアプリを切らないといけなくなるんだろうなぁ。個人的にはそれでいいけど。 #eureka_meetup
2017-06-15 20:17:45dataCorrupted 例えばURL文字列を直接URL型にマッピングできるが、空文字を渡すとだめ。 debugDescription Invalid URL String codingPathは渡されない? #eureka_meetup
2017-06-15 20:17:52JSONDecoderで、URLがcorruptedである場合にエラー投げるソースはここですね github.com/apple/swift/bl… #eureka_meetup
2017-06-15 20:18:52シンプルなマッピングならコンパイラが自動生成してくれて素早く作れる。 カスタマイズもできる。 DecodingErrorがどこでエラーが起きたかわかりやすいので、マッピングの失敗でFabricにエラーを投げるなどして問題箇所を特定できる。 #eureka_meetup
2017-06-15 20:19:05台湾版では、特徴としては、 StoryBoard、Xibは0。コードでレイアウト。 Textureを使っている。 StackScrollView(設定画面みたいなのを楽に作る) #eureka_meetup
2017-06-15 20:21:34モジュールわけをしてリクエストレイヤーやサービスレイヤー、コンポーネント、Appで分けている。 MVVM、RxSwift、Carthage&CocoaPods #eureka_meetup
2017-06-15 20:21:37StackScrollView テーブルビューっぽいけどCellの中身がそれぞれ異なるとか、選択するとCellが膨らんで選択Pickerが出て来るとか、そういう動きが作れる。 #eureka_meetup
2017-06-15 20:23:06標準コンポーネントだとStackViewをScrollViewに乗せればよいが、遅くなる。それをCollectionViewを使うことで、イニシャライズを高速化している。 #eureka_meetup
2017-06-15 20:23:10Textureの前身のAsyncDisplayKitはFacebookが作ったんだっけ。 #eureka_meetup
2017-06-15 20:23:53PairsのiOSデプロイメント Pairsの日本版iOSアプリの課題とその改善のために使った技術について #eureka_meetup
2017-06-15 20:29:55