質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1809閲覧

エラーを検索したものの解決策が見つからなかった。

wesker.alice

総合スコア45

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/04/23 21:54

前提・実現したいこと

http://crossbridge-lab.hatenablog.com/entry/2016/06/02/085726
上記のページ「Firebase を使って30分でiOSのチャットアプリを作ってみる(新SDK対応版)」を参考に記事の通りにコードの記述などをしていきました。

実現したいこと
どうしても解決できないエラーがあるので助言やアドバイスを頂けたらと思います。

http://crossbridge-lab.hatenablog.com/entry/2016/06/02/085726
上記のページ「Firebase を使って30分でiOSのチャットアプリを作ってみる(新SDK対応版)」を参考に記事の通りにコードの記述などをしていきました。

発生している問題・エラーメッセージ

エラーコードの箇所

ViewController

1databaseRef.observeEventType(.childAdded, _;withBlock: { snapshot in 2 if let name = snapshot.value!.objectForKey("name") as? String, 3 message = snapshot.value!.objectForKey("message") as? String { 4 self.textView.text = "(self.textView.text)\n(name) : (message)" 5 } 6 })

当該のエラーコード

Expected ',' separator Insert ',' Expected expression in list of expressions No exact matches in call to instance method 'observeEventType'

該当のソースコード

ViewController

1import UIKit 2import FirebaseCore 3import Firebase 4import FirebaseDatabase 5import FirebaseStorage 6 7class ViewController: UIViewController, UITextFieldDelegate { 8 9 @IBOutlet weak var textView: UITextView! 10 @IBOutlet weak var nameTextField: UITextField! 11 @IBOutlet weak var messageTextField: UITextField! 12 13 var ref:DatabaseReference! 14 var databaseRef:DatabaseReference! 15 16 override func viewDidLoad() { 17 super.viewDidLoad() 18 // Do any additional setup after loading the view. 19 20 databaseRef = Database.database().reference() 21 22 databaseRef.observeEventType(.childAdded, _;withBlock: { snapshot in 23 if let name = snapshot.value!.objectForKey("name") as? String, 24 message = snapshot.value!.objectForKey("message") as? String { 25 self.textView.text = "(self.textView.text)\n(name) : (message)" 26 } 27 }) 28 29 } 30 31 32 33 func textFieldShouldReturn(_ textField: UITextField) -> Bool{ 34 35 let messageData = ["name": nameTextField.text!, "message": messageTextField.text!] 36 databaseRef.childByAutoId().setValue(messageData) 37 38 textField.resignFirstResponder() 39 messageTextField.text = "" 40 41 FirebaseApp.configure() 42 return true 43 } 44 45 46 47}

試したこと

参考記事が2016年のものなので、記述方法がそもそも違う可能性もありますが、エラーを一つ一つ解決していくと最終的に当該コードの部分のエラーがどうしても解決できず困ってしまいました。
調べる能力が低いのも重々承知です。

解法や、解決へと導けるような解決参考サイトなどありましたら教えていただけますと幸いです。
何卒よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

MacOS Catalina ver10.15.3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

たぶんこんな感じでしょうか。

swift

1 databaseRef.observe(.childAdded, with: { snapshot in 2 if let name = snapshot.value(forKey: "name") as? String, 3 let message = snapshot.value(forKey: "message") as? String { 4 self.textView.text = "(self.textView.text ?? "")\n(name) : (message)" 5 } 6 })

Xcode でのメソッドの探し方ですが、databaseRef.observe まで打って少し待つとこんなのが出るので、その中からそれっぽいのを選ぶといいと思います。
イメージ説明

投稿2020/04/23 22:20

hoshi-takanori

総合スコア7895

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wesker.alice

2020/04/23 22:23

すごいです! エラーが一気に消えました! コピペじゃなく自分で打ち込んでみると見えてくるものがあるのですね。 勉強になりました!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問