LoginSignup
28
27

More than 5 years have passed since last update.

【導入編】Swift Realm

Last updated at Posted at 2016-07-09

はじめに

AndroidではRealmを利用したことがありましたが、直近にSwiftでアプリを作ることになり、Relamを使うことになると思うので色々試したいと思います。
今回は、Realmの導入から、簡単なデータの追加・更新までやってみたいと思います。

環境

  • XCode:7.3.1
  • iOS:9.3
  • Swift:2.2
  • Realm:1.0.1

導入

CocoaPodsをインストール

CocoaPodsをインストールしていない場合は、以下を参考に導入してみてください

1.gemでインストールする

sudo gem install cocoapods

2.ターミナルを起動しなおしてバージョンを確認する

pod --version
1.0.1

3.setup

pod setup

Setting up CocoaPods master repo
  $ /usr/bin/git pull --ff-only
  From https://github.com/CocoaPods/Specs
     d6fd82b..495e021  master     -> origin/master
  Updating d6fd82b..495e021
  Fast-forward
   Specs/MXTouchID/1.0.1/MXTouchID.podspec.json | 21 +++++++++++++++++++++
   1 file changed, 21 insertions(+)
   create mode 100644 Specs/MXTouchID/1.0.1/MXTouchID.podspec.json
Setup completed

RealmをCocoaPodsでインストールする

1.Realmを利用したいプロジェクトに移動する

cd <project root directory>
ls -la
total 0
drwxr-xr-x   5 kazuhiro  staff  170  7  9 16:25 .
drwxr-xr-x   6 kazuhiro  staff  204  7  9 16:25 ..
drwxr-xr-x  12 kazuhiro  staff  408  7  9 17:15 .git
drwxr-xr-x   7 kazuhiro  staff  238  7  9 16:25 RealmSample
drwxr-xr-x   5 kazuhiro  staff  170  7  9 16:25 RealmSample.xcodeproj

2.CocoaPodsを初期化しPodFileを作成する。

pod init

3.Podfileを編集する
ブロックを用いることで、ターゲットごとにインストールするpodを切り替えることができます。
必要に応じて記述してください。

vi Profile

<ブロックを利用しない場合>
target '<Project name>'
    pod 'Realm'

<ブロックを利用する場合>
target '<Project name>', exclusive: true do
    pod 'Realm'
end

target '<TestProject name>', exclusive: true do
    pod 'Realm/Headers'
end

4.インストールする

pod install

Analyzing dependencies
Downloading dependencies
Using Realm (1.0.1)
Generating Pods project
Integrating client project
Sending stats
Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.

5.作成されたworkspaceをクリックして起動する
スクリーンショット 2016-07-09 20.52.18.png

6.Linked Frameworks and Librariesに以下のライブラリを追加する

スクリーンショット 2016-07-09 20.54.44.png

  • Realm.framework
  • RealmSwift.framework

スクリーンショット 2016-07-09 20.55.52.png

ライブラリを選択して、addボタンで追加する

スクリーンショット 2016-07-09 20.57.21.png

Realm Xcode Pruginの導入

Xcodeプラグインを使うことでRealmモデルファイルの作成が楽になるので導入しておきましょう

Alcatraz

Alcatrazを導入していない場合は追加してください。
インストール後、xCodeを再起動すると、window>PackageManagerが追加されます

curl -fsSL https://raw.github.com/supermarin/Alcatraz/master/Scripts/install.sh | sh

Xcodeを起動し、起動時に「Load Bundles」を選択する。

Pluginを導入する

1.window>Package Manager>Realm と入力する

スクリーンショット 2016-07-09 21.14.18.png

スクリーンショット 2016-07-09 21.15.33.png

ReamlBrowser

Realm Browserとは、realm ファイルを閲覧、編集するためのMacアプリです。

RealmPlugin

RealmファイルをFileから作成するためのPluginです。
File>New>でRealmを選択

スクリーンショット 2016-07-09 21.21.37.png

Relamを使ってみよう

今回は、簡単なデータ追加、削除などを試してみたいと思います。

1.まずはスキーマを作成する

今回は、簡単なユーザー情報を管理するモデルを作成します。

RealmSwift.swift
import Foundation
import RealmSwift

class RealmUser: Object {
    dynamic var id : Int = 0;
    dynamic var nickname = "";
    dynamic var age: Int = 0;
}

2.実際にデータを追加してみましょう

ViewController.swift
import UIKit
import RealmSwift

class ViewController: UIViewController {

    let realmDB = RealmUser()

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func realmConnect() {
        realmDB.id = 1;
        realmDB.age = 26;
        realmDB.nickname = "kazuhiro";
        self.save();
        self.find();
    }

    /**
    保存処理
    */
    func save() {
        do {
            let realm = try Realm()

            try realm.write {
                realm.add(self.realmDB)
            }
        } catch {

        }
    }

    func find() {
        let realm = try! Realm()
        let dataContent = realm.objects(RealmUser)
        print(dataContent)
    }

    func dataUpdate() {

        do {
            let realm = try! Realm()

            let data = realm.objects(RealmUser).last!
            try realm.write {
                data.nickname = "hirokazu"
            }

        } catch {

        }
    }

    func deleate() {

        do {
            let realm = try! Realm()

            let data = realm.objects(RealmUser).last!

            try realm.write {
                realm.delete(data)
            }

        } catch {

        }
    }
}

参考

https://realm.io/jp/docs/swift/latest/
http://qiita.com/See_Ku/items/6211690df3c56255fde4

28
27
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
28
27