SwiftでNSDateを直感的に比較する
NSDateの比較
下記のようにしてNSDateの比較ができます。
d1.compare(d2) == .OrderedDescending
compareというメソッドを使い、その結果が.OrderedSame、.OrderedDescending、.OrderedAscendingのどれに一致しているかを見て判断。いまいち直感的でない比較でよく混乱します。
<, >, == で比較できるようにする
下記のように「<」「>」「==」を拡張すると、直感的に比較ができるようになります。
func == (d1:NSDate, d2:NSDate) -> Bool { return d1.compare(d2) == .OrderedSame } func > (d1:NSDate, d2:NSDate) -> Bool { return d1.compare(d2) == .OrderedDescending } func < (d1:NSDate, d2:NSDate) -> Bool { return d1.compare(d2) == .OrderedAscending } func <= (d1:NSDate, d2:NSDate) -> Bool { return d1 < d2 || d1 == d2 } func >= (d1:NSDate, d2:NSDate) -> Bool { return d1 > d2 || d1 == d2 }
使い方はこんなかんじ。
let now = NSDate() let tomorrow = NSDate(timeIntervalSinceNow: 60 * 60 * 24) let yesterday = NSDate(timeIntervalSinceNow: -60 * 60 * 24) if now < tomorrow { print(true) } if yesterday <= now { print(true) }
普通の文字列比較のように、右辺と左辺にNSDateのオブジェクトを指定してやればOK。ぱっと見ただけでどういう条件かも分かりやすくて便利かと。
UIScrollView.contentOffsetの謎
UIScrollView.contentOffset
UIKitに含まれるUIScrollViewのプロパティ「contentOffset」。
public class UIScrollView : UIView, NSCoding { public var contentOffset: CGPoint // default CGPointZero
contentOffsetはどれだけスクロールしたかを表します。型はCGPoint。
contentOffsetの値はまるめられる
もしかしたら常識なのかもしれないですが、最近デバッグしてて気付きました。結論は、contentOffsetの値はまるめられるということ。
contentOffsetは1.0ずつ更新されます。ただし、addSubViewされていると0.5ずつ更新されます。
iOSアプリ開発におけるイースターエッグのすすめ
はじめに
この記事はiOS Advent Calendar 2015 - Qiita 19日目の記事です。
昨日はhachinobuさんのMVVMっぽい構成のデモアプリを公開してみるでした。
本日はイースターエッグについて。
イースターエッグとは簡単にいうと隠し機能のことです。余裕のある開発者が仕込んだ粋なお遊びですね。
発見したときはついつい友達に教えたくなります。イースターエッグが仕込まれているアプリおよび実装例について紹介しますね。
iOS9対応でやろうと思っていることまとめ
iOS9がそろそろでます
iOS9が今月半ばに登場するので、それに向けてiOS9対応をする必要があります。
例年の通りだと、来年にはiOS9SDKでビルドしていないものは審査すら出せなくなります。
iOS8対応済みのアプリに対してiOS9対応する際にやろうと思っていることを以下にまとめました。
他にもこれやっといたほうがいいよっていうのがあれば教えて下さい。
iOSアプリの64bit対応でやったことまとめ
2015年06月より64bit対応必須に
そういえば今月から64bit対応が必須になりました。アプリ申請時に64bit対応していないと自動的にはじかれます。64bit対応なんてすぐ終わるやーと思っていたんですが、なんだかんだ2週間くらいかかってしまいました…。やったことをまとめます。
WWDC2015で発表されたiOS9 Search APIsまとめ
Search APIs
iOS9から「Search APIs」というのが登場します。これはSpotlightで色んな情報を検索でき、Spotlightからアプリにスムーズに遷移できるものです。たとえば、「東京駅」と入力すると地図アプリが推奨され、タップすると現在地から東京駅までのルート案内が表示されたり。WWDC2015のデモでは、「ポテト」と入力すると、料理アプリのレシピページへ直接遷移するものがありました。この機能を使うためにはネイティブアプリ側でいくつか設定をする必要がありますので、以下に紹介しますね。