【发布时间】:2018-03-05 14:02:49
【问题描述】:
我没有任何代码,因为我对数据库的所有调用都存在问题。
突然我无法将数据加载或存储到数据库中,但 firestore 仍然在离线模式下工作,所以当我发布一条新消息时,它会显示在应用程序中,但是当我在 firebase 控制台中检查我的数据库时,数据是找不到。
我仍然可以从存储中加载图片,因此我知道该应用已连接。
有人知道这是什么原因吗?
斯威夫特 4 火力基地 4.9.0 Firestore 0.10.1
我现在创建了一个只有 texField、Button 和一个 activityIndicator 的 testViewController,看看我是否可以通过基本调用编写一些数据。
这是我的代码,它只打印 1 和 4,活动指示器会保持动画。
class TestViewController: UIViewController {
@IBOutlet weak var textField: UITextField!
@IBOutlet weak var activityIndicator: UIActivityIndicatorView!
let database = Firestore.firestore()
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func didTapStoreButton(_ sender: Any) {
print(1)
activityIndicator.startAnimating()
database.collection("test").document("testDocument").setData(["testString" : textField.text ?? ""]) { (error) in
print(2)
if error != nil {
self.activityIndicator.stopAnimating()
print("Error adding document: \(error.debugDescription)")
} else {
self.activityIndicator.stopAnimating()
print("Document added")
}
print(3)
}
print(4)
}
}
【问题讨论】:
-
您是否遇到任何错误?
-
@AndréKool 没有错误。我有一个 uiactivityindicator,它在点击保存按钮时开始动画,并在成功或失败时停止动画,但它一直在动画。
-
您对 Firebase 的调用通常都应该有错误捕获,因此如果函数失败,则会将错误记录到控制台(例如)。这些错误通常在调用之后的闭包中报告。此问题可能是由多种原因引起的,因此了解更多信息有助于排除故障。
-
@Jay 我确实有错误捕获,问题是它永远不会失败或成功,它只是继续运行
-
Firebase 非常擅长捕获错误,因此这可能是一种极端情况。但是,一些基本的故障排除将帮助我们帮助您 - 在您的代码中添加一个断点并将代码(有效)运行到该断点,然后手动逐行逐行执行您的代码,直到它继续运行。然后应该将那段代码包含在您的问题中,以便我们有机会识别问题。请花点时间查看How to create a Minimal, Complete, and Verifiable example
标签: swift firebase google-cloud-firestore