RealmSwift入門 最初の最初

これは [SwiftAdventCalendar](https://qiita.com/advent-calendar/2017/swift) 12日目の記事です. 

遅くなって申し訳ないです。 記事は書いていましたが忙しくて公開できていませんでした。
この記事では 僕が RealmSwift 入門した手順を紹介します。

環境は

- Xcode version 9.1
- Swift 4

です。

## プロジェクト作成

" RealmSwiftTest " という名前でXcodeプロジェクトを作成

![スクリーンショット 2017-11-01 13.15.39.png](https://qiita-image-store.s3.amazonaws.com/0/104302/d90a63de-8450-fd84-7b2b-dfb41d41a602.png)


podでRealmSwiftをインストールするためにXCodeを閉じる.

## cocoapodsでRealmSwiftをインストール

作ったプロジェクトのディレクトリにターミナルで移動.
そこで

```
$ pod init
```

でpodfileを作成(cocoapods はインストール済みを想定)


### podfileを編集

以下のように # 追加 と書かれているところに

```
pod 'RealmSwift'
```

を追加する. スペルミスに注意 (Realmのスペルを書き間違えてた).

```
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'RealmSwiftTest' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for RealmSwiftTest
  pod 'RealmSwift' # 追加

  target 'RealmSwiftTestTests' do
    inherit! :search_paths
    # Pods for testing
    pod 'RealmSwift' # 追加
  end

  target 'RealmSwiftTestUITests' do
    inherit! :search_paths
    # Pods for testing
  end

end
```



### pod install

pod経由でRealmSwiftをインストール

```
$ pod install
```

でインストールできる.
なんかwarning出るけど(黄色いやつ)気にしないで進もう.


## RealmSwiftが使えるか確認してみる

![image.png](https://qiita-image-store.s3.amazonaws.com/0/104302/accc92e3-cd52-3c17-20e1-15e7cb3a3254.png)

を開く.  


新しくswiftファイルを" RealmSample.swift "という名前で作る.
[Image: file:///-/blob/SEJAAAVflKX/2GiMU1kVk7JVnxOEsJOLiA]RealmSample.swiftに

```
import RealmSwift
```

を追加.
おそらく下の画像の様にエラーがでる. **なのでまずpod installしたらビルドした方が良い.**

![image (1).png](https://qiita-image-store.s3.amazonaws.com/0/104302/b0def9e7-43e1-a7ce-4223-af7a7d72ddb3.png)


しかし、大丈夫. ビルドすればこのエラーは無くなる.

```
⌘ + B
```

を押してみよう(XCodeのビルドをするショートカット).
少し時間がかかることもあるが上のステータスバーを見ながら待とう.

たまにそれでも消えない時がある. その時は一旦 import 文を消してビルドし直そう. そしてimport文を追加してみるとうまくいった(僕の場合). 


### warning を取り込む

![image (2).png](https://qiita-image-store.s3.amazonaws.com/0/104302/3258a51a-7d3e-b0cb-3b98-f8f66c93c0bb.png)


warningが出て settingのアプデートを勧められているので素直にクリックして設定をアップデート.
これでwarningは消える.

さあさあ import RealmSwift のエラーが消えたところで早速RealmSwiftを使ってプログラミングしてみよう !! 


## RealmSwift 入門

まずは[ここ](https://dev.classmethod.jp/smartphone/iphone/start-ios-realm-crud/)を参考にしてRealmSwiftの基本的な使い方を見て行こう.

Personというクラスのデータをデータベース(Realm)に保存するという目的でコードを書こう!!


## オブジェクトの生成

Realmに保存する対象となるクラスはRealmSwiftのObjectクラスを継承する必要がある. 
またメンバ変数には dynamicという修飾子をつけよう! ちなみにdynamicにはSwift4からは @objc という修飾子もつけなくてはならないので注意しよう(XCodeに注意されたら従おう).

```
class Person: Object {
    @objc dynamic var name = "" // dynamicはとりあえずつける. objcから使うため?
    @objc dynamic var age  = 0
    @objc dynamic var sec  = ""
}
```

このPersonクラスのオブジェクトを生成しておこう.
ViewControllerあたりでPersonオブジェクトを作っておこう.

```
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        let tanaka = Person()
        tanaka.name = "田中"
        tanaka.age  = 23
        tanaka.sex  = "MALE"
    }
```



## レコードへの書き込み

次は作った tanaka オブジェクトをレコードに書き込んで保存してみる. 

```
let realm = try! Realm()
 
let tanaka = Person()
tanaka.name = "田中"
tanaka.age  = 23
tanaka.sex  = "MALE"
 
try! realm.write() {
    realm.add(tanaka)
}
```

Realm() で Use of unresolved identifier というエラーが出たらそのファイルで

```
import RealmSwift
```

し忘れていることが原因なのでちゃんと importしよう. Realmに関連するファイルには全てimport しよう.

![image (3).png](https://qiita-image-store.s3.amazonaws.com/0/104302/01004024-dff0-d04f-076c-4ab2fadb33e2.png)


## まとめ

こんな感じでRealmSwiftの入門手順は終わりです。これからリファレンスや他の記事をみてもっと使えるように学びます。