noki雑記

iOS、ときどきAndroid

Swift

OperationとOperationQueue

複数の非同期な処理を順に実行する方法を検討していて、OperationQueueを使うと便利そうだなと思い触ってみました。 OperationとOperationQueue キュー(OperationQueue)の中に処理(Operation)を追加しておくと、先に追加した処理から順に実行され、実行…

Associated Value を 条件式で処理する

enum で Associated Value を定義した際に、switch 文でしか条件式を組めないと思っていたのですが、if-case文やfor-case文なるものが swift2 から追加されていました。 下記のような感じです。 enum GameTitle { case dragonQuest(Int) case persona(Int) }…

UITableView の reloadSections アニメーションの不具合

ヘッダーをタップすることでセルを開閉できる、アコーディオンのようなテーブルビューを作ったときの話です。ヘッダーだけ残した状態で、セルとフッターを隠したり表示したりを切り替えたくて、 reloadSections:withRowAnimation: で開閉を実装しました。と…

iOS8 を含むSwift3対応時の不具合対応

Swift 2.1 から 3 へ移行する際に、大きな不具合が1つあったので、その対応を考えてみました。 ※ ただし、多くの端末・バージョンで検証したものではありません。 問題 UITableViewDelegate の table​View(_:​height​For​Row​At:​) に渡される indexPath の…

mapとforEachとfor

mapとforEach 返り値を必要とするならmapメソッド、要らないならforEachメソッドを使います。書き方は同じ。 以下forEachの例(アルファベットの一覧を作成)。 // a to Z var chars : [Character] = [] ["a", "A"].forEach { let scalar = $0.unicodeScalar…