NSBlogger

意識高いブログ

swift

RxMoya + Codableで実現するリアクティブなAPIクライアント

Moya 最近MoyaというAPIクライアントを使っています。なかなか良さげで使い勝手も悪くありません。 github.comAlamofireベースで作られており、Moyaを入れるだけでいい感じのAPIクライアントがすぐに手に入ります。 また、Rx拡張もされているのでRxSwiftなど…

iOS10対応でやろうと思っていることまとめ

はじめに いよいよiOS10がリリースされます。iOSアプリ開発者のみなさんは、運営しているアプリを新iOSに対応させなければなりません。例年通りだと翌年の2月あたりに新iOSに対応していないアプリは審査に出すことすらできなくなります。早めに対応しておき…

SwiftでStoryboardとXibをシンプルに呼び出す

StoryboardとXibの呼び出し方が面倒 コードからStoryboardやXibを呼びだそうとすると以下のような煩わしい書き方になります。 // load view from xib let sampleView = UINib(nibName: "SampleView", bundle: nil).instantiateWithOwner(self, options: nil)…

SwiftでNSDateを直感的に比較する

NSDateの比較 下記のようにしてNSDateの比較ができます。 d1.compare(d2) == .OrderedDescending compareというメソッドを使い、その結果が.OrderedSame、.OrderedDescending、.OrderedAscendingのどれに一致しているかを見て判断。いまいち直感的でない比較…

UIScrollView.contentOffsetの謎

UIScrollView.contentOffset UIKitに含まれるUIScrollViewのプロパティ「contentOffset」。 public class UIScrollView : UIView, NSCoding { public var contentOffset: CGPoint // default CGPointZero contentOffsetはどれだけスクロールしたかを表します…

iOSアプリ開発におけるイースターエッグのすすめ

はじめに この記事はiOS Advent Calendar 2015 - Qiita 19日目の記事です。 昨日はhachinobuさんのMVVMっぽい構成のデモアプリを公開してみるでした。 本日はイースターエッグについて。 イースターエッグとは簡単にいうと隠し機能のことです。余裕のある開…

Swiftの文字列操作まとめ

空文字のチェック 「isEmpty」を使えばOK。空ならtrueが返ってきます。 var empty = "" var empty2 = String() //Empty. if empty.isEmpty{ println("Empty.") }else{ println("Not Empty.") } //Empty. if empty2.isEmpty{ println("Empty.") }else{ printl…

Swiftでは絵文字を変数として扱える

(スクショはNDA的にダメみたいなので消しました。また後日のっけます)公式ドキュメントにもありましたが、絵文字を変数として使えます。なんだか面白い。

Swiftの「タプル(Tuple)」で複数のオブジェクトをひとまとめにする

タプル(Tuple) タプルは複数のオブジェクトをまとめて扱えるものです。 タプルの例 let Blog = (20140608, "About tuple")「20140608」「"About touple"」をもつBlogオブジェクトができました。 Blogオブジェクトへのアクセスの仕方はこちら。 Blog.0 //20…

SwiftでArrayの中身を昇順・降順でソートする

Sort関数 「Sort」を使えば簡単に配列の中身を並び替えられます。 昇順 var numbers = [1,4,2,3,6,5] sort(numbers) numbers // [1,2,3,4,5,6]そのままsortで配列を引数に与えてあげればOK。 引数の中身がソートされ、上書きされます。 var strings = ["a", …

SwiftのArrayがもつ非破壊的メソッド「map」

var numbers:Array<Int> = [0,2,4,6,8] var doubleNumbers:Array<Int> = numbers.map({ (number:Int) -> Int in return number * 2 }) numbers doubleNumbers結果はこちら [0,2,4,6,8] [0,4,8,12,16]numbersから値をひとつずつとってきて2倍したものを返してます。 非</int></int>…