海外の情報込み!GTA6サキドリ!

iOSアプリ開発日記【その5】

iOSアプリ開発日記【その5】

前回の記事

今回はデータベースを使ってとてもシンプルなチャットアプリを作成してみます!

あまりにもシンプルでチャットアプリと呼ぶにはまだまだ発展途上ですが、データベースを使う勉強になりましたので紹介しておきます。

今回作成した画面は上記の画像の通りです。リストアップすると、

  1. Text Field(オレンジ色とピンク色のフィールド)
  2. Firebase(Googleが提供するクラウドデータベースサービス。)

1つずつ見ていきましょう!

iOSアプリ開発【Text Field】

まずテキストフィールドを使った、文字入力です。これはとても単純で、ボタンと同じようにストーリーボードに設置します。

次に、classにUITextFieldDelegateを追加で引き継ぐために以下のように書き、

class ViewController: UIViewController, UITextFieldDelegate

ViewControllerクラスの中に以下のように

@IBOutlet weak var nameField: UITextField!
nameField.delegate = self

と記述しておきます。

これだけでもうテキストフィールドが使えるようになります。

ただし、テキストフィールドに書かれた(タイプされた)内容をプログラム内でいじらないと何も起こりません(当たり前ですが笑)。

そこで次の項目【データベース】です!

iOSアプリ開発【Database】

Firebaseの利用

今回データベースをiOSアプリの中で使うにあたりGoogleが提供しているFirebase Realtime Databaseというサービスを外部ライブラリ(?)を利用しました。

便利なことにGoogle先生はFirebase Realtime Databaseの導入方法をFirebaseのホームページでとても詳しく説明してくれているのでこのページでは割愛します。

まずViewController.swiftの中に以下のように記述します。

import FirebaseCore
import Firebase
import FirebaseDatabase

 

上のように書くことで外部ライブラリであるFirebaseをインポートして、『この機能をこのファイルの中で使いますよ』と言う風に宣言します。(事前に該当するxcodeプロジェクトにcocoapodsとしてFirebaseをインストールする必要があります。)

その次にViewControllerクラスの中に以下のように書きます。

var databaseRef:DatabaseReference!

(この行はviewDidLoadメソッドの中に書いても外に書いても大丈夫だと思いますが、私はviewDidLoadメソッドの外に記述しています。)

そしてここからのコードはviewDidLoadメソッドの中に記述します。

databaseRef = Database.database().reference()
databaseRef.observe(DataEventType.childAdded, with: { snapshot in
if let name = (snapshot.value! as AnyObject).object(forKey: "name") as? String,
let message = (snapshot.value! as AnyObject).object(forKey: "message") as? String {
self.textView.text! = "\(self.textView.text!)\n\(name) : \(message)"
}
})

上のコードは新しくデータが追加されると、UITextViewを更新して最新のデータを表示します。

以上でviewDidLoadメソッド内に書く内容は終わりです。

    func textFieldShouldReturn(_ textField: UITextField) -> Bool{

let messageData = ["name": nameField.text!, "message": messageField.text!]

databaseRef.childByAutoId().setValue(messageData) 
textField.resignFirstResponder() 
messageField.text = "" 

return true
}

ここで新しく関数を書きます。上の関数は画面上の2つのTextFieldに記入された内容をまずmessageDataという辞書型に保存します。そしてsetValueメソッドを使ってデータベースにデータを保存します。データの保存が終わると、TextFieldのキーボードを閉じて、TextFieldを空(空文字列)にして完成です。

以上に説明した内容を漏れなく打ち込めば失敗することはないでしょう。(2019年6月現在)

 

ちなみにこの画面の真ん中あたりにあるボタンは次のページ(画面)に行くためのボタンです。つまりまだまだ新しい機能があるということです。記事が更新されるのをお楽しみに。

次の記事はこちら

アプリ開発カテゴリの最新記事