我们正在尝试访问数据库中的子项,但是我们正在使用由 segue 引入的先前 View 中的字符串。它不断给出错误指令的错误。仅在模拟器中运行后出现。我们正在寻找错误的解决方案。谢谢!
来自先前 View 的函数,带有字符串:
}
func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let controller = segue.destinationViewController as! SorDViewController
if segue.identifier == "secondScreen" {
controller.textToDisplay = nameField.text
}
}
用于访问数据并将其上传到 firebase 的代码(错误仅出现在第一个函数中):
import Foundation
import UIKit
import Firebase
import FirebaseDatabase
class SorDViewController: UIViewController {
var textToDisplay: String?
@IBAction func postData(sender: AnyObject) {
let ref = FIRDatabase.database().referenceFromURL("database URL")
ref.child(textToDisplay!).child("Type").setValue("Singles")
}
@IBAction func postData2(sender: AnyObject) {
let ref = FIRDatabase.database().referenceFromURL("database URL")
ref.child("Type").setValue("Doubles")
}
}
最佳答案
作为快速测试,请尝试更改您的 prepareForSegue
方法:
func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let controller = segue.destinationViewController as! SorDViewController
if segue.identifier == "secondScreen" {
controller.textToDisplay = nameField.text
}
}
对此:
func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let controller = segue.destinationViewController as! SorDViewController
print("=> nameField: \(nameField.text)")
controller.textToDisplay = nameField.text
}
请仔细检查您的 nameField.text
中是否确实有一个非零值:)
跟踪 textToDisplay
的更改也是一个好主意,如下所示:
var textToDisplay: String? {
didSet {
print("oldValue: \(oldValue), newValue: \(textToDisplay)")
}
}
关于swift - 在 swift 2 中从 firebase 调用子进程时出现错误的指令错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43944079/