LoginSignup
1
0

More than 3 years have passed since last update.

【Fire base+swift】学習記録(2)チャットアプリを作る

Last updated at Posted at 2019-11-17

【Swift】Firebase Realtime Database を用いてチャットアプリを爆速コーディングしてみた。
こちらを参考にチャットアプリを作成しました。
細かいデザインに関してはガン無視して、とりあえず動くものを作って、Firebaseを理解しようというものです。
自分なりの理解をコメントに入れています。

sample.swift
import UIKit
import FirebaseDatabase

class ViewController: UIViewController {
    @IBOutlet weak var textView: UITextView!
    @IBOutlet weak var nameInputView: UITextField!
    @IBOutlet weak var messageInputView: UITextField!

    //Databaseのインスタンス作成
    var databaseRef: DatabaseReference!

       override func viewDidLoad() {
           super.viewDidLoad()
        //Databaseのインスタンス作成
        databaseRef = Database.database().reference()

        //databaseRef.observe(.childAdded, with: { snapshot in〜~}でイベントを表示させる
        databaseRef.observe(.childAdded, with: { snapshot in
            if let obj = snapshot.value as? [String : AnyObject], let name = obj["name"] as? String, let message = obj["message"] {
                //currentTextを定義
                let currentText = self.textView.text
                //textViewにcurrentTextを表示
                self.textView.text = (currentText ?? "") + "\n\(name) : \(message)"
            }
        })

       }
    @IBAction func tappedSendButton(_ sender: Any) {
    //ボタンを押した時に、UITextField2つに入力されている値を送信します。
       view.endEditing(true)

        //nameInputViewとmessageInputViewに値がある場合のif文
       if let name = nameInputView.text, let message = messageInputView.text {
        //messageDataを定義
           let messageData = ["name": name, "message": message]
        //databaseに保存
           databaseRef.childByAutoId().setValue(messageData)
        //text欄を空欄にする
           messageInputView.text = ""
       }
    }


}

動いた!Firebaseにもデータ保存できている!

GitHubはこちら

1
0
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
1
0