徒然エンジニアブログ

徒然エンジニアブログ

理系東大生がプログラミングを中心に様々なことについて情報発信していきます!

【Swift】Firebaseを使ったiOSアプリの開発〜データベース〜

今回はいよいよデータベースにデータを保存する方法をみて行きたいと思います。
以前の2回分はこちらから見てみてください。
turedureengineer.hatenablog.com
turedureengineer.hatenablog.com


Firebaseにはデータベースの種類が二つあります。
「Cloud Firestore 」と「Realtime Database」があります。
違いが知りたい人はリンクを貼っておくので見てみてください。
データベースを選択: Cloud Firestore または Realtime Database  |  Firebase


データベースというとSQLがよく使われますがFirebaseのRealtime Databaseではjson形式で保存して行きます。
百聞は一見に如かずということで見て行きましょう。

Firebaseの設定

まずコンソール画面に移動して、左側からDatabaseを選択します。
下の方にスクロールしていくとこのような画面が出てきます。
f:id:turedureengineer:20190107151849p:plain

データベースを作成というところをクリックしましょう。
f:id:turedureengineer:20190107151844p:plain

練習として使うのでテストモードで構いません。

データの保存

//保存するデータ
let values = ["name": "徒然エンジニア", "email": "abc@gmail.com"]
Database.database().reference().child("person").updateChildValues(values, withCompletionBlock: { (error, reference) in
        //エラー処理
        if error != nil{
            print(error!)
            return
        }
            //成功した時
            
})

保存するデータは上のようにDictionary型にします。
エラー処理は書いておくとエラーの内容もわかるので書いておきましょう。


こうすると下のようにデータが保存されています。
f:id:turedureengineer:20190107151837p:plain

データの削除

これも簡単です。

Database.database().reference().child("person").child("email").removeValue()

こうすることでメールアドレスのデータを消すことができます。
中をのぞいてみると以下のようになっています。
f:id:turedureengineer:20190107154545p:plain

しっかり消えてますね。

データの読み取り

読み取りは少しだけ複雑かもしれません。


データはDatasnapshot型の変数snapshotの中に入っています。
まずはこれをdictionary型に変換します。

そしてキーをもとに取り出します。

Database.database().reference().child("person").observeSingleEvent(of: .value, with:{(snapshot) in
        if let data = snapshot.value as? [String:AnyObject]{
            let name = data["name"] as? String
            let email = data["email"] as? String
            print(name!)
            print(email!)
        }
}, withCancel: nil)