"सबसे पहले आंतरिक जांच विफल: अमान्य दस्तावेज़ संदर्भ। दस्तावेज़ संदर्भ में सेगमेंट की संख्या भी होनी चाहिए, लेकिन NewGame में 1 "

Aug 18 2020

मैं स्विफ्ट प्रोग्रामिंग पर काम कर रहा हूं लेकिन हर बार जब मैं अपना ऐप चलाता हूं, तो यह अचानक दुर्घटनाग्रस्त हो जाता है। मुझे मिला त्रुटि संदेश था

थ्रेड 1: अपवाद: "पहले आंतरिक विश्लेषण विफल: अमान्य दस्तावेज़ संदर्भ। दस्तावेज़ संदर्भ में सेगमेंट की संख्या भी होनी चाहिए, लेकिन न्यूगैम में 1 है"

मैंने त्रुटि को खोजा और लोग कह रहे हैं कि अगर मेरे पास db में कई संग्रह और दस्तावेज़ हैं, तो यह होता है। लेकिन मेरा डीबी वास्तव में सरल है। केवल दो संग्रह और उनके अंदर मेरे पास दस्तावेज हैं। इस छवि की तरह।

जब मैं बार बटन टैप करता हूं, तो ऐप क्रैश हो जाता है, जो कि कोड की यह रेखा है।

@IBAction func addPressed(_ sender: UIBarButtonItem) {
    
    performSegue(withIdentifier: K.homeToGameScreen, sender: self)
    
    // create new game array in db & player's ready status -> true
    
    db.collection(K.FStore.newGameCollection)
        .addDocument(data: [K.FStore.gameBoardField: GameBoard.gameBoard, K.FStore.player1Field: playerInfo[K.FStore.nameField]!, K.FStore.player2Field: K.FStore.player2Field, K.FStore.uID: playerInfo[K.FStore.uID]!]) { (err) in
            
            if let err = err {
                print("Error getting documents3: \(err)")
            } else {
                
                self.db.collection(K.FStore.playersCollection).document(self.docId).updateData([K.FStore.isReadyField: true]){ err in
                    if let err = err {
                        print("Error updating player's isReady status: \(err)")
                    } else {
                        print("Document successfully updated")
                    }
                }
            }
    }
}

ऊपर दिए गए कोड में कुछ HomeViewController कहा जाता है, लेकिन मुझे हमेशा AppDelegate.swift फ़ाइल में त्रुटि मिलती है।

क्या कोई मुझे बता सकता है कि यहाँ क्या चल रहा है और कृपया इसे कैसे ठीक करें?

जवाब

1 DougStevenson Aug 18 2020 at 19:04

समस्या लगभग निश्चित रूप self.docIdसे शून्य या खाली स्ट्रिंग है जिस समय इसका उपयोग किया जा रहा है, जो इसे उस दस्तावेज़ के लिए पथ खंड बनाने से रोकता है जो DocumentReference का निर्माण कर रहा है। हम यह नहीं देख सकते हैं कि आपने इसे कैसे असाइन किया है या यहां तक ​​कि जहां इसे परिभाषित किया गया है, इसलिए आपको यह डिबग करना होगा और यह पता लगाना होगा कि आपके पास वह मूल्य क्यों नहीं है जिसकी आपको उम्मीद है।