gpt4 book ai didi

ios - 调试聊天应用

转载 作者:行者123 更新时间:2023-11-28 06:43:31 25 4
gpt4 key购买 nike

我使用 Firebase 使用最后一条消息制作了这个简单的聊天应用程序,但我一直遇到此错误并且似乎无法克服它。我检查了很多东西,比如@IBOutlets,但我似乎无法解决问题。谁能帮我修复“ fatal error :在展开可选时意外发现 nil”。问题是,我似乎找不到任何可选项开始,因为一切都只是它的常规数据类型,或者像@IBOutlets 一样被贬低了。下面是我的其中一个 View Controller 的代码:导致应用程序崩溃的代码。任何帮助都会很棒,或者建议您朝哪个方向前进。谢谢!

import UIKit
import Firebase
class ViewTwo : UIViewController {

var ref: Firebase!

var REF: Firebase!

@IBOutlet weak var readMsg: UILabel!

@IBOutlet weak var msg: UITextField!

@IBOutlet weak var nameField: UITextField!

@IBAction func sendMsg(sender: AnyObject) {

nameField.resignFirstResponder()

if nameField.text == "ETHAN" {

ref = Firebase(url: "my-app/Person1Msg")

ref.setValue("\(msg.text)")

REF = ref

} else if nameField.text == "CHASE" {

ref = Firebase(url: "my-app/Person2Msg")

ref.setValue("\(msg.text)")

REF = ref

} else {

msg.placeholder = "Please enter name ALL CAPS"

}

}

override func viewDidAppear(animated: Bool) {

REF.observeEventType(.Value) { (snap: FDataSnapshot!) in

self.readMsg.text = snap.value as? String

}

}

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

self.view.endEditing(true)

}

}

这是我的另一个 View Controller 中的代码,但没有发现任何错误:

class ViewController : UIViewController {

var accepted: Bool = false

@IBOutlet weak var nameField: UITextField!

@IBAction func submit(sender: AnyObject) {

nameField.resignFirstResponder()

if nameField.text == "CHASE" || nameField.text == "ETHAN" {

accepted = true

} else {

nameField.placeholder = "Please enter correct name ALL CAPS"

}

}

@IBAction func start(sender: AnyObject) {

nameField.resignFirstResponder()

if accepted == true {

let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)

let nextViewController : UIViewController = storyboard.instantiateViewControllerWithIdentifier("ViewTwo") as UIViewController

self.presentViewController(nextViewController, animated: true, completion: nil)

} else {



}

}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

self.view.endEditing(true)

}
override func viewDidLoad() {

super.viewDidLoad()

accepted = false

}
}

最佳答案

在 ViewTwo 类中,在 viewDidAppear 函数中,有一个尚未完全定义的 REF:

REF.observeEventType(.Value)

此时,REF 仅定义为 REF: Firebase!。

因此当 View 出现时,它会尝试为没有引用的 REF 调用 observeEvent。

在调用 sendMsg 函数之前,REF 没有完全定义。

此外,您可能希望在 readMsg 分配中添加一些错误检查:

override func viewDidAppear(animated: Bool) {

REF.observeEventType(.Value) { (snap: FDataSnapshot!) in

if let msg = snapshot.value as? String {
self.readMsg.text = msg
}
}
}

关于ios - 调试聊天应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37232525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com