gpt4 book ai didi

ios - Firebase 写入复杂数据

转载 作者:行者123 更新时间:2023-11-28 11:04:28 25 4
gpt4 key购买 nike

大家好,我是 Swift 开发的新手,刚开始使用 Google 的 firebase 数据库。我在按照我想要的方式构建 JSON 树时遇到了一些麻烦,首先是因为我正在使用创建唯一 ID 的 .childByAutoId() 函数,目前效果很好,但如果我想将它命名为数据库中的“位置”?

其次,我真正的问题是我想在我的每个 Locations 中有一个嵌套的 Links 数组,由 2 个字符串组成。所以我尝试过使用元组,但 Firebase 不喜欢那样。可能是一个愚蠢的解决方案。无论如何,我查阅了 firebase 文档并在尝试使用它时遇到了一堆编译错误......

在我的每个“位置”中构造嵌套“链接”数组的正确语法是什么,或者基本上是在 firebase 中创建复杂 JSON 的有效方法。这是我的实验代码:

class func pushToFirebase(){

let latitude = "33.333333"
let longitude = "33.333333"
let title = "foobar"
let link = ("linkTitle","linkUrl")
let link1 = "link"
let links = [link, link1]

let post:[String : AnyObject] = [
"latitude":latitude,
"longitude":longitude,
"title":title,
"links":links
]

let firebaseRef = FIRDatabase.database().reference()
firebaseRef.child("Locations").childByAutoId().setValue(post)
}

desired structure

最佳答案

始终避免在 firebase 数据库中使用元组数组。首选使用字典创建你想要的 JSON 树:-

class func pushToFirebase(){

let latitude = "33.333333"
let longitude = "33.333333"
let title = "foobar"
let link = ("linkTitle","linkUrl")
let link1 = "link"
let links = [link, link1]

let post:[String : AnyObject] = [
"latitude":latitude,
"longitude":longitude,
"title":title,
"links":links
]
//To create Locations
let firebaseRef = FIRDatabase.database().reference()
firebaseRef.child("Locations").childByAutoId().setValue(post)




//To create create Links

func createLinks(linkTitle : String!,linkURL : String!){
let selfUniqueGeneratedId = String(Int(NSDate.timeIntervalSinceReferenceDate() * 1000))
//Will give you a unique id every second it is called (or maybe millisecond too)

firebaseRef.child("Locations").child("Links").child(selfUniqueGeneratedId).setValue([link_title : linkTitle,
link_url : linkURL ])

}
}

您无法控制 Locations 对象,因为它们是使用 childByAutoId 创建的,这就是为什么它具有 ..Auto.. 的原因... ;)

但是你肯定可以用这段代码读取那些 AutoId....

func retrieveFirebaseDB(){

firebaseRef.child("Locations").observeEventType(.Value, withBlock: {(Snapshot) in

if Snapshot.exists(){
if let locationDict = Snapshot!.value as! [String:AnyObject] {
for each in locationDict as [String:AnyObject]{
let locationID = each.0
//Here you are retrieving every locationID in your node Locations, GO CRAZY...!
}
}
}
})

}

关于ios - Firebase 写入复杂数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38960859/

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