I am trying to get data from my database using Firebase. I am unsure how to unwrap and assign the variables. I am trying to have a title on the top of the screen based on the name imported, likes, and playing the video.
When I print the variable jdata it prints the Optional JSON from the firebase.
import Foundation
import SwiftUI
import AVKit
import Firebase
struct PlayerView: View {
@State var likes: Int = 0
@State var name: String = ""
@State var url: String = ""
@State let player = AVPlayer(url: URL(string: url))
func liked() { likes += 1 }
func update() {
FirebaseApp.configure()
let root = Database.database().reference()
root.observeSingleEvent(of: .value, with: { (snapshot) in
if let data = snapshot.value as? [String: Any] {
let jdata = data["urls"] // Optional JSON
print(jdata)
}
})
}
var body: some View {
VStack{
Text(name)
VideoPlayer(player: player).padding()
HStack {
Button("Like", action: liked).padding()
Text(String(likes)).padding()
}
HStack {
Button("Prev"){}.padding()
Button("Next"){}.padding()
}
Button(action: update) {
Text("Update Database")
}.padding()
}
}
}
My variable after it prints Optional({"-N25GwfJ9Cj7IlfkFNpL" = { likes = 0; name = "NameTest"; url = "Testing"; }; })
"urls"contains a singleString, you could doif let jdata = data["urls"] as? String { self.url = jdata }. If it contains multiple URLs, as the name implies, you'd have to decide which item you want.