gpt4 book ai didi

ios - 为什么我的 If-Else block 没有按应有的方式工作?

转载 作者:行者123 更新时间:2023-11-29 00:59:44 26 4
gpt4 key购买 nike

我是 swift 和使用 firebase 的新手,我正在制作一个简单的应用程序,让用户输入一个蜂窝前缀号码并显示该号码是哪个蜂窝网络。

我在 if-else 部分遇到了难题。每当我添加 else 部分时,标签总是显示“缺失”,但每当我打印 snapshot.key 和 snapshot.value 时,我都会在控制台中得到正确的结果。当我删除 else 部分时,它起作用了。我真的很难找出答案。提前致谢!这是代码:

import UIKit
import Firebase

class ViewController: UIViewController, FBSDKLoginButtonDelegate {

let loginButton: FBSDKLoginButton = {
let button = FBSDKLoginButton()
button.readPermissions = ["email"]
return button
}()

@IBOutlet weak var numField: UITextField!
@IBOutlet weak var answerField: UILabel!

@IBAction func enterButton(sender: AnyObject) {
matchNumber()
}

func matchNumber(){

let number: String = numField.text!
let numRef = Firebase(url: "https://npi2.firebaseio.com/num_details")
numRef.queryOrderedByKey().observeEventType(.ChildAdded, withBlock: { snapshot in
let network = snapshot.value as! String!
if snapshot.key == self.numField.text! {
self.answerField.text = network

}
else {
self.answerField.text = "Missing"
}

})

}

最佳答案

我想我知道发生了什么。


说明:

1) 您向 Firebase 提出请求。

2) 请求是异步的,所以代码一直在运行。

3) 请求尚未完成,因此执行 else 语句,因为尚未返回值(检查初始状态)。

4) 当您删除 else 时,代码会执行 if,因为在请求完成之前没有其他可执行的内容(已检查初始状态,但有没有为其执行的代码,然后 Firebase 再次检查,因为有数据更改并执行了 if 语句。


引用:

来自 FIREBASE DOCUMENTATION(你应该在来这里之前阅读 :P)

“Firebase 数据是通过将异步监听器附加到数据库引用来检索的。监听器将在数据初始状态时触发一次在数据发生变化时再次触发>。本文档将介绍检索数据、数据排序方式以及如何对 Firebase 数据库中的数据执行简单查询的基础知识。”

https://www.firebase.com/docs/ios/guide/retrieving-data.html


解决方案:

使用完成处理程序。它就是为此而设计的。不要像这样在请求中使用 else 语句。这不是 Firebase 的使用方式。

关于ios - 为什么我的 If-Else block 没有按应有的方式工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37152524/

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