Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 引用firebase文档时发现无:未使用选项?_Swift_Xcode_Firebase_Google Cloud Firestore - Fatal编程技术网

Swift 引用firebase文档时发现无:未使用选项?

Swift 引用firebase文档时发现无:未使用选项?,swift,xcode,firebase,google-cloud-firestore,Swift,Xcode,Firebase,Google Cloud Firestore,我和Firebase一起工作。引用文档并尝试修改/添加数据时,每次都会崩溃。它给了我一个线程1:致命错误:在隐式展开可选值时意外发现nil 我试着清理这个项目并重建它。我已经打印了用户电子邮件(每次都会给我一个有效的电子邮件地址)。还定义了Chosenbackground。我不知道为什么它一直崩溃,因为我没有使用一个可选的是零 这是我导入的内容: import Foundation import Firebase import FirebaseAuth import FirebaseFirest

我和Firebase一起工作。引用文档并尝试修改/添加数据时,每次都会崩溃。它给了我一个线程1:致命错误:在隐式展开可选值时意外发现nil

我试着清理这个项目并重建它。我已经打印了用户电子邮件(每次都会给我一个有效的电子邮件地址)。还定义了Chosenbackground。我不知道为什么它一直崩溃,因为我没有使用一个可选的是零

这是我导入的内容:

import Foundation
import Firebase
import FirebaseAuth
import FirebaseFirestore
import FirebaseDatabase
import GoogleSignIn
这里我定义了db:
var-db:Firestore

此处设置chosenBackground并调用函数:

@objc func lightBlueAndOrangeImageTapped(tapGestureRecognizer: UITapGestureRecognizer){
        print("lightBlueAndOrangeTapped")
        // Your action
        selectedBackgroundLabel.text = "Light Blue and Orange Background is selected"
        chosenBackground = "lightBlueAndOrange"
        chosenBackgroundToFirebase()
    }
这就是功能:

func chosenBackgroundToFirebase(){ //IN THIS FUNCTION IT CRASHES
        if let userEmail = Auth.auth().currentUser?.email {
            print("\(userEmail)")
            print("\(chosenBackground)")
            let newDocRef = db.collection("customizeDatabase").document("\(userEmail)") //ERROR ON THIS LINE

            newDocRef.updateData([
                "background": "\(chosenBackground)"
            ]) { err in
                if let err = err {
                    print("Error updating document: \(err)")
                    newDocRef.setData([
                        "background" : "\(self.chosenBackground)"
                    ])
                } else {
                    print("Document successfully updated")
                }
            }
        }
    }
我想能够读写这份文件。非常感谢您的帮助:)我还是一个相当新的开发人员,因此非常感谢您的帮助:)(尽管这是一个相当愚蠢的错误)。

如果您仔细查看,
db
设置在
viewDidLoad

override func viewDidLoad() {
    super.viewDidLoad()

    // [START setup]
    let settings = FirestoreSettings()

    Firestore.firestore().settings = settings
    // [END setup]
    db = Firestore.firestore()
}

问题是
db
nil
——因此,变量被隐式强制展开,并导致崩溃,因为没有值(AKA
nil
)。

这是哪一行?我添加了哪一行:)它在chosenBackgroundToFirebase()函数try
print(db)中
在它崩溃的行之前。如果是
nil
,则问题在于设置
db
变量。您是对的。db为零。如何修复它(并使其非零)?@RosalieW在访问数据库之前,如何初始化
db
,必须设置该值