LoginSignup
193
192

More than 5 years have passed since last update.

R.swiftを使ってStoryboard名や画像名のTypoを0にする

Last updated at Posted at 2015-10-10

最近使っているR.swiftという便利ライブラリについてまとめてみます。
このライブラリですが、Storyboard名や画像名をプロパティーとして取得できるようになるのでTypoする事がなくなります!
おまけにコードも短くなるので非常にオススメです。

R.swift - Github

R.swiftでできること

Storyboard

下のようにプロパティーを使って取得できるようになります。
MyViewControllerへのキャストも自動で行ってくれます。

let viewController = UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController() as? MyViewController
// ↓ のように書ける
let viewController = R.storyboard.main.initialViewController

Nib

Nibも同様です。

let view = UINib(nibName: "MyNib", bundle: nil).instantiateWithOwner(nil, options: nil).first as? MyView
// ↓ のように書ける
let view = R.nib.myNib.firstView(nil, options: nil)

Reuse Identifier

TableViewCellのReuseIdentifierもプロパティー化してくれます。
MyCellへのキャストも勝手に行ってくれます。

let cell = UITableView().dequeueReusableCellWithIdentifier("CellIdentifier") as? MyCell
// ↓ のように書ける
let cell = tableView.dequeueReusableCellWithIdentifier(R.reuseIdentifier.cellIdentifier)

UIImage

UIImageも同様です。
Assets.xcassetsに入っている画像もそれ以外の画像も全てプロパティー化します。

let image = UIImage(named: "MyImage")
// ↓ のように書ける
let image = R.image.myImage

Segue

performSegueWithIdentifier("OpenSettings")
// ↓ のように書ける
performSegueWithIdentifier(R.segue.viewController.openSettings.identifier)

SegueはprepareForSegueで参照する機会が多いのでありがたいです。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == R.segue.viewController.openSettings.identifier {
    }
}

その他

試していないのですが、カスタムフォントやリソースファイル(JSONファイル等)もプロパティーとして取得できるようです。

Rという構造体

Rという構造体はR.generated.swiftファイルに入っていて、中身は下のようになっています。

スクリーンショット 2015-10-10 22.20.12.png

R.generated.swiftは下記のようなRun Scriptを使ってコンパイル時に生成しています。

スクリーンショット 2015-10-10 22.19.49.png

インストール方法

  1. CocoaPodsでR.swiftを追加
  2. Run Scriptを追加して"\$PODS_ROOT/R.swift/rswift" "$SRCROOT"と記述
    • R.swift4以降を使っている場合は、「"\$PODS_ROOT/R.swift/rswift" generate "$SRCROOT" 」のようにgenerateコマンドを追加して下さい。
  3. コンパイルするとR.generated.swiftというファイルが生成されるので、それをプロジェクトに追加

こちらのビデオが非常に分かりやすいので宜しければご参考にして下さい。

R.swift demo

193
192
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
193
192