Help us understand the problem. What is going on with this article?

iOSでFirebaseを使用して、データベースに対してCRUDを試してみる。

Xcodeで新規プロジェクトを作成しよう

Create a new Xcode project -> SingleViewApp の順で新規プロジェクトを作成する。
UserInterfaceはStoryBoardにしておきましょう。

Firebaseのプロジェクトを作成しよう

Firebaseに下記のURLからGoogleアカウントでログインします。
Firebase

ログインできたら「プロジェクトを追加」ボタンでプロジェクトを追加しましょう。

Firebaseの設定をしよう

プロジェクトのコンソール画面からアプリを追加することができます。
今回は「iOS」を選択しましょう。
80edd941.png

アプリのBundleIDを入力します。アプリ名は適当で良いです。
a6627889.png

設定ファイルをダウンロードして、Xcodeプロジェクトに追加します。

その後プロジェクトフォルダまで移動して、ターミナルから、下記コマンドを打ちましょう。

pod init

CocoaPodsをインストールしていない方は、インストールしてから行ってください。
こちらが参考になります。CocoaPodsを導入してみた - Qiita

今回はRealTimeDatabase を使用するので、Podファイルに、以下の文言を追加しましょう。

pod 'Firebase/Core'
pod 'Firebase/Database'

ターミナルから、下記コマンドでSDKをインストールしましょう。

pod install

インストールが完了したら、白いプロジェクトファイルが出来上がっていると思いますので、Xcodeで開きます。
97c2bdae.png

AppDelegeteファイルに、画像のように追記します。![スクリーンショット 2019-12-03 15.22.18.png]18a76768.png

データベースを作成しよう

左のタブのDataBaseを選択し、RealTimeDatabaseを選択します。
今回はテストモードで開始しましょう。
スクリーンショット 2019-12-03 15.47.01.png

5859c80c.png

これで準備完了です!

データベースに対して操作してみよう

データを追加してみよう

viewDidLoad に以下のように書いて実行します。

override func viewDidLoad() {
    super.viewDidLoad()
    let ref = Database.database().reference()

    // KeyValue型の配列を用意しておきます。
    let user = ["name":"Tarou Yamada", "age":"20", "favorite":"jogging"]

    // データを追加します。idは自動で設定してくれます。
    ref.child("Users").childByAutoId().setValue(user)
}

Firebaseのコンソール画面に移動すると、データが追加されているのが確認できます!
51ece462.png

データを更新してみよう

先程のデータを更新します。

override func viewDidLoad() {
    super.viewDidLoad()

    let ref = Database.database().reference()

    // 先程のIDを指定します。(人によって変わるので、自分のDatabaseからコピペしてね)
    let id = "-Lv9asdz8vsqeZSZQdyh"
    // 先程のIDを指定してデータを上書きします。
    ref.child("Users/\(id)/name").setValue("名無しの権兵衛")
}

データを削除してみよう

先程のデータを削除します。

override func viewDidLoad() {
    super.viewDidLoad()

    let ref = Database.database().reference()

    // 先程のIDを指定します。(人によって変わるので、自分のDatabaseからコピペしてね)
    let id = "-Lv9asdz8vsqeZSZQdyh"
    // 先程のIDを指定してデータを削除します。
    ref.child("Users/\(id)").removeValue()
}

データを取得してみよう

サンプルデータを作ろう

FireBaseのコンソール画面で、データを直接編集することができます。
めんどくさい人は、下記のJSONをファイルにして、FireBaseのインポートしましょう。

test.json
{
  "Users" : {
    "-Lv4cGsQbS3cXDLTErXS" : {
      "age" : "18",
      "favoriteFood" : "クッキー",
      "name" : "田中 花子"
    },
    "-Lv8Lrf3ii9bB5p6rcIc" : {
      "age" : "22",
      "favoriteFood" : "牛丼",
      "name" : "山田 太郎"
    },
    "-Lv8gSwpG-ZkEbPsbORu" : {
      "age" : "13",
      "favoriteFood" : "たこ焼き",
      "name" : "木村 正人"
    },
    "-Lv8vAUr79kcpoygkpDl" : {
      "age" : "26",
      "favoriteFood" : "寿司",
      "name" : "川上 純子"
    }
  }
}

サンプルデータを取得してみよう

下記コードで、Xcodeのコンソールに取得結果が表示されます。

override func viewDidLoad() {
    super.viewDidLoad()

    let ref = Database.database().reference()

    // データの変更を監視(observe)してるため、変更されればリアルタイムで実行されます。
    ref.child("Users").observe(.value) { (snapshot) in
        // Users直下のデータの数だけ繰り返す。
        for data in snapshot.children {
            let snapData = data as! DataSnapshot

            // Dictionary型にキャスト
            let user = snapData.value as! [String: Any]
            print(user)
        }
    }
}

まとめ

環境の設定から、CRUDの基本的なところまでは押さえられたはず。 次はFirebaseを使って簡単なアプリを作ってみたい。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした