Realm

Swift:超簡単データベース!Realmを使った超簡単お手軽Todoアプリ!!


今回は、

ホットなデータベースサービス『Realm』を使ってみようかと思います。

超簡単Todoアプリでお試しします!!
(Todoアプリと呼んでいいのか怪しいレベルです。。。)

*この記事は超初心者に向けたものなので、Realmの登場はかなり下の方になります。あしからず。

 

Realmとは

iosアプリのデータベースといえば
『CoreData』というものあり、
なんでもできて便利らしいのですが、

めっちゃ難しいらしいです。

そこで、
『Realm』が人気を博しているようです。
とにかく簡単に書けるので、
初心者に向いてるらしいです。

詳しくは、こちらの素晴らしい記事をご覧ください。

qiita.com

 

プロジェクト名は『RealmApp』にしました。

 

まずはStoryBoardを開いてください。

デフォルトのViewControllerがありますよね、

それは削除して、

新しくUITableViewControllerを配置してください。

それにUINavigationControllerを紐付けましょう。

f:id:jumprails3303:20161128011520p:plain

1. TableViewControllerを選択した状態で、

2. EditorのEmbed in

3. 『Navigation Controller』を選択。

 

それができると、このような状態になります。
f:id:jumprails3303:20161128011553p:plain

 

デフォルトのViewControllerを消したせいで、
最初に表示されるViewがわからなくなってしまっているので、指定してあげましょう。

①UINavigationControllerを選択して

②attributes inspectorボタンをクリック

③『is initial View Controller』にチェック!!

f:id:jumprails3303:20161128012154p:plain

新しくUITableViewControllerを配置したので、
それに対応したファイルも作成しましょう。

File → New → File で

f:id:jumprails3303:20161128012618p:plain

 

CocoaTouchClassを選択してください。
f:id:jumprails3303:20161128012648p:plain

 

そして、Nameはシンプルに『TableViewController』にしましょう!
f:id:jumprails3303:20161128013418p:plain

 

今作成したファイルを早速、StoryBoard上のUITableViewControllerに適応させましょう!
①UITableViewControllerを選択して、
②新聞紙マークをクリックし、
③classに『TableViewController』と入力しましょう。
f:id:jumprails3303:20161128013407p:plain

次に
①新しいUIViewController(Todoを追加するページ)を配置します。
②TableViewControllerからViewControllerへ『show』でセグエを設定。
f:id:jumprails3303:20161128015335p:plain

③segueのidentifierを『goCreate』を設定。
f:id:jumprails3303:20161128015843p:plain

 

ここでコードをいじります。

UINavigationBarをカスタム

最初にくっつけたNavigationControllerを使っていきます。

TableViewController.swiftを編集します。

* コメントアウトされたいらない部分の削除

* コメントアウトされた必要な部分のコメントアウトを外す。

* navigationBarのカスタム

* セグエについて
これらを意識して、編集しました。

UINavigationBarのカスタマイズについて

こちらをご覧ください。

 

UINavigationControllerのセグエについて

こちらをご覧ください。

 

ひとまずコードは置いておいて、

StoryBoardに戻りましょう。

先ほど配置した新しいUIViewControllerにUIButtonを配置しましょう。場所は適当でいいですよ
f:id:jumprails3303:20161128020846p:plain

 

そして、
配置したUIButtonから、
UIViewControllerの上部にある3つのボタンの中の一番右まで「control + drag」です。
『unWindToTopSegue…』という表示が出てくるので、選択してください。
f:id:jumprails3303:20161128021600p:plain

 

ここまで、一応動くところまできました。Runしてみましょう。

 

 

そしてStoryBoardにて、
UIViewController上に

* 『UILabel』・・・todoにテキストを変更。

* 『UITextField』・・・配置しただけ。

をこのように配置してください。
UIButtonも『リストに追加』に変更しましょう。
f:id:jumprails3303:20161128212152p:plain

そういえばまだ、UIViewControllerに対応してファイルを作成していませんでした。
『CreateViewController』で作成してください。
TableViewControllerに対応するファイルを作った時と同じ手順です。
Todoを作る(create)ページにする予定なのでこの名前にしました。

次に配置したUITextFieldとコードを結びつけましょう。
名前は普通に『textField』にしましょう。
f:id:jumprails3303:20161128213206p:plain

UIButtonも同じようにコードと結びつけましょう。
名前は『createButton』にしましょう。
f:id:jumprails3303:20161128213316p:plain

 

Realmの登場!!

お待たせしました!
そろそろRealm登場させます。

podfileを開いて

pod ‘RealmSwift’

という項目を追加しましょう。

そしてターミナルにて

$ pod install

してください。

これでRealmが使えるようになりました。

Xcodeworkspaceを開いてください。

 

Todoを司るTodo.swift

次にTodo.swiftというtodoの内容を記述するファイルを作成します。
内容と言っても今回はTodoのタイトルしか記述するつもりはないのです。
いつもどうりCocoa Touch Classを選択してください。

ここからが少し違って、
subclassを『NSObject』してください。
名前はもちろん『Todo』!!!
f:id:jumprails3303:20161128214610p:plain

このようになっていると思います。

それをこのように編集しましょう。

 

import RealmSwift

このimportによってRealmSwiftを使えるようにしました。
ライブラリを使う際はほとんどこのimportを使います。

dynamic

Realmを使用する際、プロパティにはdynamicをつけるルールです。

 

そろそろ終わりが近づいてきました。

CreateViewController.swiftをこのように編集しましょう!!

try! Realm()

このtry! Realm()はデータを扱う際に使います。使う頻度はかなり高いです。
Realmデータベースをインスタンス化しているとか、参照しているとか、
そんな感じです。

ここでは保存する際に使用してます。

『write』内で書くことでデータを永続化できます。
データを加えているのが『add』ですね。

それらをcreateButtonの中に書くことによって
ボタンをタップした際に処理が行われます。

しれっと書いたtextFieldDelegateについては
こちらの記事をご覧ください。今回は省きます。

こちら!

 

次にTableViewControllerをこのように編集しましょう。

説明が必要なところは

ここかと思います。
コメントアウトに記述しているとおり
『objects()』によって保存されているデータを取得できます。

TableViewControllerについての詳しい使い方は
こちらをご覧ください。

 

最後に忘れていた。
cellのIdentifierを書きましょう。

ここにデフォルトで記述されている『reuseIdentifier』をIdentifierに登録してください。
f:id:jumprails3303:20161128225846p:plain

 

これで完成です!!


コメント

コメントを残す

*