मेरे पास फायरबेस रीयलटाइम डेटाबेस का उपयोग करके आईओएस स्विफ्ट ऐप है। यदि मैं आमतौर पर ऐप का उपयोग करता हूं तो मुझे कोई समस्या नहीं मिल रही है। हालांकि, मैं किनारे के मामलों की उम्मीद करना चाहता हूं।फायरबेस रीयलटाइम ऐरे गिनती मिस्चैच
मैं अद्यतन को धक्का देने से पहले अपने ऐप का परीक्षण करने की कोशिश कर रहा हूं, और एक तरीका यह है कि मैं इसे एक तालिका के साथ वीसी से आगे और आगे जा रहा हूं, अगले वीसी में देखें जो एक विस्तार वीसी है। यदि मैं इसे कई बार करता हूं तो अंततः तालिकादृश्य बहुत सारे डुप्लिकेट डेटा दिखाएगा।
मैं अपने Firebase कंसोल में एक tableview मेरी सिम्युलेटर पर खुला और जा रहा होने और मैन्युअल रूप से एक मूल्य बदल रहा है और तुरन्त डिवाइस पर स्ट्रिंग परिवर्तन से मेरे ऐप का परीक्षण किया है।
तो मैं क्यों मेरे tableview बच्चों की एक गलत राशि दिखाने अगर यह लगातार जाँच कर रहा है क्या मूल्य होना चाहिए होता है के रूप में उलझन में हूँ।
// MARK: Firebase Methods
func checkIfDataExits() {
DispatchQueue.main.async {
self.cardArray.removeAll()
self.ref.observe(DataEventType.value, with: { (snapshot) in
if snapshot.hasChild("cards") {
self.pullAllUsersCards()
} else {
self.tableView.reloadData()
}
})
}
}
func pullAllUsersCards() {
cardArray.removeAll()
let userRef = ref.child("users").child((user?.uid)!).child("cards")
userRef.observe(DataEventType.value, with: { (snapshot) in
for userscard in snapshot.children {
let cardID = (userscard as AnyObject).key as String
let cardRef = self.ref.child("cards").child(cardID)
cardRef.observe(DataEventType.value, with: { (cardSnapShot) in
let cardSnap = cardSnapShot as DataSnapshot
let cardDict = cardSnap.value as! [String: AnyObject]
let cardNickname = cardDict["nickname"]
let cardType = cardDict["type"]
let cardStatus = cardDict["cardStatus"]
self.cardNicknameToTransfer = cardNickname as! String
self.cardtypeToTransfer = cardType as! String
let aCard = CardClass()
aCard.cardID = cardID
aCard.nickname = cardNickname as! String
aCard.type = cardType as! String
aCard.cStatus = cardStatus as! Bool
self.cardArray.append(aCard)
DispatchQueue.main.async {
self.tableView.reloadData()
}
})
}
})
}
मैं numberOfItemsInSection या कुछ और पर एक firebase विधि का उपयोग करने की आवश्यकता है? – RubberDucky4444
सुनिश्चित नहीं है कि हम पर्याप्त कोड देख रहे हैं। ViewDid/WillAppear जैसी चीजें टेबल विधियों वाले सरणी पर टेबल विधियों और किसी भी सेटटर/गेटर गुणों के रूप में उपयोगी होंगी। आम तौर पर जब किसी तालिका में डुप्लिकेट डेटा के साथ समस्याएं होती हैं, तो ऐसा इसलिए होता है क्योंकि तालिका के डेटा सरणी को पुनः लोड होने से पहले साफ़ नहीं किया जा रहा है। जैसा कि आप दो अलग-अलग विचारों के बीच आगे और आगे जा रहे हैं, उदाहरण में कुछ भी देखें, उदाहरण के लिए, प्रत्येक बार जब आप तालिका दृश्य पर वापस स्विच करेंगे तो उसे कॉल किया जाएगा। – C6Silver