yashigani?.days

週刊少年ジャンプについてだらだら書きます

Swift

Promiseを学ぶためにSwiftでPromiseを実装してみた話

この記事ははてなデベロッパーアドベントカレンダー2015の16日目の記事です.昨日は id:motemen の エンジニア寿司を支える技術 - Hatena Developer Blog でした. こんにちは.id:yashigani_w です. はてなでは定期的に開発合宿があり,好きな開発言語を試…

unwrapして値を棄てるときを少し小洒落たかんじに

たまにunwrapするけど,必要なのはその有無でそのままそれを棄てることがあります. こういうときです. if let a = some { print("some is .Some") } このままだとXcodeに,aを使ってないから_に変えろって怒られたりしてゲンナリ………オシャレ感ゼロです. …

関西モバイルアプリ研究会で「Swiftで自然数を作るっ」という発表をしました #関モバ

www.flickr.com 毎月おなじみの関西モバイルアプリ研究会で「Swiftで自然数を作るっ」という発表でライブコーディングをしました. 関西モバイルアプリ研究会 #5 (2015/08/26 19:30〜)kanmoba.connpass.com 書いたコードはgistで公開しています(少し長いので…

Cocoa勉強会関西でSwiftの型について発表しました #cocoa_kansai

Swiftでコーディングしていると,型について色々と考えることがあります. 型の捉え方は学術的にも色々あるとおもいますが,このスライドは自分の経験から自分なりの捉え方なので,間違っていることや補足などあれば教えて下さい. スライドの補足 例に出し…

SwiftでNS_OPTIONSスタイルのEnumを実現する

Swiftのenumは便利ですが,たまには使い慣れたNS_OPTIONSスタイルのenumを作りたくなるときがあります. 素朴にやるとこのように実装できます. /// My Options enum Options: UInt { case None = 0 case A = (1 << 0) case B = (1 << 1) } しかし,これでは…

Hatena Engineer Seminar #4で「はてなのiOSアプリとSwift」という発表をしました #hatenatech

2/7に開催されたHatena Engineer Seminar #4 @Tokyoで「はてなのiOSアプリとSwift」という発表をしてきました. 「Hatena Engineer Seminar #4 @ Tokyo」を2/7(土)に開催します! #hatenatech - Hatena Developer Blog 現在,はてなのiOSアプリ開発ではSwi…

switchとType Castingで安全なprepareForSegueを実装する

画面遷移時に実行されるprepareForSegue:sender:ですが,Objective-Cで実装するといいかんじに不安な実装が完成します. - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqual:@"HogeSegue"]) { HogeView…

Swiftでマクロっぽいことをする

Objective-Cだと今でもマクロを使うことはあります. (ReactiveCocoaなんかも依存していますね.) プロダクトコードで使うのはできたら避けたいマクロですが,ビルド設定によって動作を切り替えたいときとかには結構便利です. しかしながら,Swiftにはマク…

Optinalのmapがちょっと使いにくいから拡張してやった #swift

SwiftのOptionalにはmapがある. func map<U>(f: T -> U) -> U? 引数のfはT(Optionalで包まれいる値)を受け取ってUを返す関数を受け取って,fの返り値であるUをOptionalで包んだU?を返す関数です. 要は,if-letを使って明示的にunwrapしなくてもOptionalの構造</u>…

SwiftのPropertyでObjective-Cのアレがしたい

overrideする Objective-CではPropertyはただのアクセサメソッドの自動生成だったので,overrideするのはなにも考えなくてもいいって感じだったけど,Swiftでは微妙に違う. 例えばUIScrollViewのcontentInsetをいじって常に上部にマージンを設けたいときは…