Я следовал этому https://www.youtube.com/watch?v=_N10q1iR2HQ&t=328s учебнику;однако, с поправкой на некоторые изменения, внесенные в Xcode 11 GM seed 2 синтаксис и термины, потому что некоторые вещи устарели.Сборка прошла успешно, но по какой-то причине вылетает.
Буду признателен за любую помощь и предложения, перепробовал все пробные версии и ошибки, о которых мог подумать.
Вот код ниже (вставка всего этого, так как в GM seed 2 было много изменений команд):
import SwiftUI
import Combine
import FirebaseFirestore
struct dataset : Identifiable {
var id = ""
var name = ""
var phone = ""
var services = ""
}
class getData : ObservableObject {
var didChange = PassthroughSubject<getData, Never>()
var data = [dataset](){
didSet{
didChange.send(self)
}
}
init(){
let db = Firestore.firestore()
let settings = db.settings
settings.areTimestampsInSnapshotsEnabled = true
db.settings = settings
db.collection("venues").addSnapshotListener {(snap,err) in
if err != nil{
print((err?.localizedDescription)!)
return
}
for i in (snap?.documentChanges)!{
let name = i.document.data()["name"] as! String
let phone = i.document.data()["phone"] as! String
let services = i.document.data()["services"] as! String
let id = i.document.documentID
DispatchQueue.main.async {
self.data.append(dataset(id: id, name: name, phone: phone, services:services))
}
}
}
}
}
struct ContentView: View {
@ObservedObject var data1 = getData()
var body: some View {
VStack {
Text("Hello World")
List(data1.data){ i in
cellView(name: i.name, phone: i.phone, services: i.services)
}
}
}
}
struct cellView : View {
@State var name = ""
@State var phone = ""
@State var services = ""
var body : some View{
VStack{
Text(name)
Text(phone)
Text(services)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
Это результаты
2019-09-19 20: 30: 34.724594 + 0600 Место проведения [16661: 712640] - [I-ACS036002] Отчетность экрана аналитикивключен.Вызовите + [FIRAnalytics setScreenName: setScreenClass:], чтобы установить имя экрана или переопределить имя класса экрана по умолчанию.Чтобы отключить экранную отчетность, установите для флага FirebaseScreenReportingEnabled значение NO (логическое значение) в Info.plist
2019-09-19 20: 30: 34.975422 + 0600 Место проведения [16661: 712648] 5.12.0 - [Firebase /Аналитика] [I-ACS023007] Аналитика v.50300000 запущена
2019-09-19 20: 30: 34.975634 + 0600 Место проведения [16661: 712648] 5.12.0 - [Firebase / Analytics] [I-ACS023008]Чтобы включить ведение журнала отладки, установите следующий аргумент приложения: -FIRAnalyticsDebugEnabled Невозможно привести значение типа '__NSCFNumber' (0x10b8a8610) к 'NSString' (0x10954f978).
2019-09-19 20: 30: 35.073897 + 0600Место проведения [16661: 711704] Не удалось привести значение типа '__NSCFNumber' (0x10b8a8610) к 'NSString' (0x10954f978).(lldb)