gpt4 book ai didi

Swift/firebase/firebase 中 child 数量的升序

转载 作者:行者123 更新时间:2023-11-30 10:52:08 24 4
gpt4 key购买 nike

我的数据库截图 enter image description here

我想限制用户最多只能输入 5 条短信。因此,我想添加带有消息和日期值的“1”、“2”、“3”、“4”、“5”有序子项。实际上我可以通过添加以下代码进行某种操作来实现它

        if message0 > 1 && message0 < 7 {
message0 = message0 - 1
}

但是如果我跳过这部分,那么当系统将数据记录到 Firebase 中时,它总是会跳过“2”子级,然后以正常的升序方式对它们进行编号。

数据库截图

enter image description here

我把完整的代码放在下面。它有效,但我觉得上面的操作有点奇怪,可能会给以后带来麻烦。如果您知道我做错了什么以及一些好的建议,可以正确地以升序方式添加 child 的数量,我将非常感激。还想添加代码来检查现有的子项,以避免在同一子项编号下覆盖。但不知道该怎么做。无论如何,提前感谢您的任何建议。

  func sendInputTextToFirebase() { 
var message0 = MyGlobalVariables.refMessages.child(MyGlobalVariables.uidUser!).observe(.childAdded) { (snapshot) in
var a = [String]()
a.append(snapshot.key)
print(a)
let b = a.count
print(b)
}

//TODO: make child counting into dbase upto 5 in more elegant way
if message0 > 1 && message0 < 7 {
message0 = message0 - 1
}

if message0 < 6 {
let messageString = String(message0)
let picker = tergetDateTF.text
let messageT = [
"message": messageTV.text! as String,
"Date": picker]
MyGlobalVariables.refMessages.child(MyGlobalVariables.uidUser!).child(messageString).setValue(messageT)

} else {

print("limit exceeded")
}}}

最佳答案

正如评论中的用户建议您可以使用 autoId 添加您的消息,如下所示:

MyGlobalVariables.refMessages.child(MyGlobalVariables.uidUser!).childByAutoId().setValue(messageT)

对于消息的计数,你可以这样做:

首先让下一个var成为全局变量

func sendInputTextToFirebase() { 
var message0 = MyGlobalVariables.refMessages.child(MyGlobalVariables.uidUser!).observe(.childAdded) { (snapshot) in
a.append(snapshot.key)
print(a)
if(a.count < 6) {
let messageString = String(message0)
let picker = tergetDateTF.text
let messageT = [
"message": messageTV.text! as String,
"Date": picker]
MyGlobalVariables.refMessages.child(MyGlobalVariables.uidUser!).childByAutoId().setValue(messageT)
} else {
print("limit exceeded")
}

关于Swift/firebase/firebase 中 child 数量的升序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54346635/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com