読者です 読者をやめる 読者になる 読者になる

RubyMotion をアンインストール

Apple の新言語 Swift を使い始めていて、思いのほか書き心地が良かったので、 iOS アプリ開発は RubyMotion から Swift に移行することにした。 そこで、後戻りできないように、MacBook から RubyMotion をアンインストール。 sudo rm -rf /Library/RubyMot…

UITableView 編集時に挿入用の行を表示したい

UITableView 編集時のみ、挿入用の行を表示したい。こんなやつ。 アイコン自体は tableView:editingStyleForRowAtIndexPath で UITableViewCellEditingStyleInsert を返せば表示できる。 ただ、編集時のみ挿入用の行を表示するとなると、結構面倒だった。 以…

Bitissues を RubyMotion で書き直してリリース

Objective-C で作っていた Bitbucket Issues の iOS クライアント『Bitissues』を RubyMotion で書き直した。 Apple の審査もすんなり通過。 これが初めてリリースする RubyMotion 製アプリになる。 今回のリリースで、ようやくイシューのステータスを変更で…

RubyMotion でリポジトリに含めたくない設定を外部ファイルに抜き出す

Web API の consumer_key と consumer_secret のような、 人に知られたくないキーは Git リポジトリに含めたくない。 そこでキーを git リポジトリ管理外の設定ファイルに抜き出すことにした。 設定ファイルを読み込んで RubyMotion でいい感じに扱うための …

依存ファイルの自動解決に失敗したときは motion-require

RubyMotion は Smart File Dependencies 機能があるので、依存ファイルを自動で解決してくれる。 でも、たま~に解決できなくて定数未定義エラーに遭遇するときがある。 そんなときは Rakefile で files_dependencies を記述すればいいんだけど、 依存してい…

AutoLayout を使って ADBannerView を配置する方法

ADBannerView は広告取得に失敗したら隠さないと、レビューでリジェクトされてしまう。 今までは広告取得に失敗したら frame を操作して画面外に移動していた。そのためのモジュールを Objective-C で書いたりもした。でも最近は AutoLayout を使うようにし…

Teacup の AutoLayout サポートを使ってカスタム UITableViewCell をレイアウトする

RubyMotion 用 gem の Teacup は、CSS っぽくビューのデザインを記述できる、 厳密にはビューのプロパティを設定するための内部 DSL。 なんと AutoLayout もサポートしていたりする。 rubymotion/teacup Teacup の AutoLayout を使って、カスタム UITableVie…

CoreDataQuery と NSFetchedResultsController を組み合わせる

CoreData でデータをフェッチするときは NSFetchedResultsController を使いたいけど、 CoreDataQuery には NSFetchedResultsController を取得するメソッドが無い。 その代わり NSFetchRequest は取得できるから、 CDQQuery っていう CoreDataQuery 内部で…

CoreDataQuery は気に入らなくても ruby-xcdm は使ったほうがいい

RubyMotion 用の CoreData ラッパー gem である CoreDataQuery を先日から使い始めた。当初は理想の gem に出会ったと思っていたが、使っているうちに気に入らない箇所がちらほら。 自分は Named Scope が使いたいので多少の不満には目を瞑っている。でも人…

CoreDataQuery は求めていた gem かもしれない

CoreDataQuery という CoreData ラッパー gem が公開された CoreDataQuery - CDQ | InfiniteRed 開発元は RubyMotionQuery と同じ InfiniteRed。 RubyMotion ではラッパー gem じゃなくて、MagicalRecord や NLCoreData のような Objective-C のライブラリを…

RubyMotion で MagicalRecord を使う

最近、RubyMotion 向けのラッパー gem じゃなくて、 Objective-C のライブラリを使ったほうがいいのでは、って思うようになってきた。 CoreData なら MotionData や MotionDataWrapper じゃなくて MagicalRecord。 そこで RubyMotion で MagicalRecord が使…

RubyMotion で CoreData を使うとき Xcode で作成した Data Model をラッパー gem なしで読み込む

先日 RubyMotion で CoreData を使うために試した MotionDataWrapper、 ソースコードを見たらシンプルな実装で難しいことやっていなかった。 Xcode の Data Modeler で作成したエンティティ定義を読み込むけど、 それは CoreData.framework が提供している機…

MotionDataWrapper を使ったモデルのスペックを書く

CoreData を使ったモデルのスペックを書く場合、NSManagedObjectContext などのセットアップと、 テストデータの後始末が面倒。 このうちセットアップは MotionDataWrapper が楽にしてくれる。 あとは後始末だけど、こいつも MotionDataWrapper の spec にお…

MotionDataWrapper と NSFetchedResultsController を組み合わせる

MotionDataWrapper を使うと、CoreData を ActiveRecord ライクに扱えるため、 # すべてのエントリを配列で取得 all_entries = Entry.all # 下書きのみを配列で取得 draft_entries = Entry.where("draft = ?", true).all という風に、簡単にデータを取得でき…

RubyMotion で FontAwesome を使う

自分はデザインが苦手、特にアイコンが作れないので、 FontAwesome を重用している。 これがないとアプリ開発できないと言ってもいいくらい。 当然、RubyMotion でも使いたい。 前に Objective-C で FontAwesome を使ったときと同じ方法 を採用してもいいけ…

MotionDataWrapper で多対多のリレーションシップを実現する

MotionDataWrapper を使って、ブログのエントリとカテゴリみたいな、 多対多のリレーションシップに挑戦した。 すんなりいくだろうと思っていたけど、意外に嵌ってしまったので、 メモを残しておく。 エンティティとリレーションシップの定義 Xcode Data Mod…

RubyMotion のデバッガが LLDB になっていた

気づいたら、RubyMotion のデバッガが GDB から LLDB に変わっていた。 どうやら、iOS 7 から LLDB しか SDK に含まれないようになったためらしい。 @t_nakamura iOS 7 から LLDB しか SDK に含まれないようになったので、それに併せて GDB から LLDB に切り…

Formotion の Date row と Subform row で嵌った

Grouped スタイルの UITableView を使ったフォームを簡単に作成できる、 RubyMotion 用の gem 『Formotion』が便利。 clayallsopp/formotion 文字列入力や数値入力やスイッチなど、たいていの入力は README 読めば使える。 ただ自分の場合、日付選択とサブフ…

MotionDataWrapper

はじめに 「RubyMotion で CoreData を使うなら MotionData を導入した方がいい」って勧めておいてなんだけど、 その後『MotionDataWrapper』を知って速攻で移行してしまった。 macfanatic/motion_data_wrapper MotionDataWrapper の特徴 MotionData は Data…

RubyMotion で CoreData を使うなら MotionData を導入した方がいい

RubyMotion で CoreData が使えることは確認できた。 * ただ、CoreData のエンティティ定義をコードで書くのは結構シンドイ。 NSManagedObjectContext の初期化や CRUD を含めると、CoreData だけでかなりのコードを書くことになる。 正直、CoreData のラッ…

RubyMotion で CoreData を使う

# -*- coding: utf-8 -*- $:.unshift("/Library/RubyMotion/lib") require 'motion/project/template/ios' begin require 'bundler' Bundler.require rescue LoadError end Motion::Project::App.setup do |app| app.name = 'CoreDataSample' app.frameworks…