https://console.firebase.google.com/
ContentView.swift
// // ContentView.swift // DevSwiftUI // // Created by Cairocoders // import SwiftUI import Firebase struct ContentView: View { @State var search = "" @ObservedObject var data = getData() var body: some View { NavigationView{ List { ForEach(self.data.datas.filter{(self.search.isEmpty ? true : $0.title.localizedCaseInsensitiveContains(self.search))}, id: \.id) { rs in NavigationLink(destination: Detail(data: rs)) { Text(rs.title) } } } .navigationBarTitle("Search Movie") .searchable(text: self.$search) { ForEach(data.datas, id:\.id) { info in HStack { Text(info.title) .searchCompletion(info.title) } } } } } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } } struct Detail : View { var data : dataType var body : some View{ VStack { Text(data.title) .font(.title) .fontWeight(.bold) Text(data.description) }.padding() } }Model.swift
// // Model.swift // DevSwiftUI // // Created by Cairocoders // import SwiftUI import Firebase class getData : ObservableObject{ @Published var datas = [dataType]() init() { let db = Firestore.firestore() db.collection("movielist").getDocuments { (snap, err) in if err != nil{ print((err?.localizedDescription)!) return } for i in snap!.documents{ let id = i.documentID let title = i.get("title") as! String let description = i.get("description") as! String self.datas.append(dataType(id: id, title: title, description: description)) } } } } struct dataType : Identifiable { var id : String var title : String var description : String }
// // DevSwiftUIApp.swift // DevSwiftUI // // Created by Cairocoders // import SwiftUI import Firebase @main struct DevSwiftUIApp: App { @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { ContentView() } } } class AppDelegate: NSObject,UIApplicationDelegate{ func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool { FirebaseApp.configure() return true } }