Objective-Record導入手順
Objective-Record導入手順
新年一発目は抱負ではなく、普通のこと
Core Dataは素で書くと結構めんどくさいっぽいので Core DataをActiveRecordっぽくラップしてくれるパッケージ Objective-Record https://github.com/mneorr/Objective-Record これを動く環境を構築する。 目標はサンプルプロジェクトを動かすところまで。
環境
要は、macでxcodeとrubyとgitがインストールされている状態
Objective-Record DL方法
https://github.com/mneorr/Objective-Record 上記サイトからアクセスしてまずは、git clone する。 本体及びサンプルプロジェクト(SampleProject)をクローン(DL)する
git clone https://github.com/mneorr/Objective-Record.git
Readme.mdインストール方法を見ると
Install with CocoaPods or clone
import "ObjectiveRecord.h" in your model or .pch file.
とある。CocoaPods http://cocoapods.org/とかいうRubyで言うところのRubygemsをインストールする必要があるらしい。
SampleProjectディレクトリ直下にあるPodfileがrubygemsにおけるGemfileに相当し、依存ファイルのライブラリなどをDLするのに必要
CocoaPodsインストール方法
CocoaPods サイトのInstall欄より、ターミナルから以下のコマンドを叩く
$ gem install cocoapods
$ pod setup
これでインストール完了
サンプルプロジェクトの依存ライブラリをDL
$ cd SampleProject
$ # ここで、Podfileがあるのを確認する
$ cat Podfile
# Gemfile みたいな感じで書かれている
platform :ios, :deployment_target => "5.0"
pod 'ObjectiveSugar'
target :test, :exclusive => true do
link_with 'SampleProjectTests'
pod 'Kiwi'
end
$ pod install #依存ファイルインストールする
インストールすると、もろもろファイルが生成される。Podsディレクトリとか、つくられる。
- Pods
SampleProject.xcworkspace
open SampleProject.xcworkspace
でXcodeを起動する。
サンプルプロジェクトそのままでは実行しても、何もデータを永続化しないので、 AppDelegate.m を以下のように追加する。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after application launch. self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; //追加 //Personオブジェクト作成 Person *john = [Person create]; john.name = @"John"; //Sqlite3に保存 john.save; //Sqlite3に保存されているPersonレコードを表示 for(Person *person in [Person all]) { NSLog(@"models name = %@",person.name); } //ここまで return YES; }
シミュレータで実行すると、コンソールログにこんな感じでデータが保存されてれていることが確認できる。
2013-01-03 00:22:38.615 SampleProject[29275:11603] models name = John
Sqlite3ファイルから保存状態を確認する
シミュレータで起動するとして、アプリ内のSqlite3を開けてみて確認する
シミュレータと、アプリの場所は以下の様な場所に保管されている
/Users/{UserName}/Library/Application Support/iPhone Simulator/6.0/Applications/XXXXXXXXXXXXXXXXXXXX ※/Documents/SampleProject.sqlite
※ XXXXXXXXXXXXXXXXXXXX はランダムっぽい文字列アプリのUUIDかな?たぶん アプリの分だけある。
上記パスからのSqliteファイルをターミナルから起動する
$ sqlite3 SampleProject.sqlite
# テーブル定義を確認する プレフィックスにZがついた形で、Personテーブルが作成されているのが確認できる。
# CoreDataで作成された形式になっているのがわかる
sqlite> .schema
CREATE TABLE ZPERSON ( Z_PK INTEGER PRIMARY KEY, Z_ENT INTEGER, Z_OPT INTEGER, ZAGE INTEGER, ZISMEMBER INTEGER, ZNAME VARCHAR, ZSURNAME VARCHAR );
# アプリで格納したレコードを確認する
sqlite> select * from ZPERSON;
1|1|1|0||John|