Bonsoir
J’ai un petit souci avec un observable qui ne se mais pas à jour.
J’ai une classe qui est ActivityModelFirebase
qui est observable avec une variable qui est Published
class ActivityModelFirebase
class ActivityModelFirebase: ObservableObject {
var ref = Database.database().reference()
@Published var activities: [ActivityModel] = []
func getActivities() {
self.ref.child("Activities").observeSingleEvent(of: .value) { (snapshot) in
//guard snapshot as! DataSnapshot != "NSNull" else { return }
for activity in snapshot.children {
let activitySnapshot = activity as! DataSnapshot
let activityArrayData = activitySnapshot.value as? [String:AnyObject]
self.activities.append( ActivityModel(another: activityArrayData?["another"] as! String, bannerpic: activityArrayData?["bannerpic"] as! String, date: activityArrayData?["date"] as! String, heading: activityArrayData?["heading"] as! String, pdflink: activityArrayData?["pdflink"] as! String, simpletext: activityArrayData?["simpletext"] as! String, someother: activityArrayData?["someother"] as! String))
}
// ici j'ai bien des data.
print(self.activities[0].heading)
}
}
}
Le print me retourne bien un objet donc cette partie fonctionne.
class ActivityModel ( qui mon objet de data)
class ActivityModel: Identifiable {
var id = UUID().uuidString
private var _another: String = ""
private var _bannerpic: String = ""
private var _date: String = ""
private var _heading: String = ""
private var _pdflink: String = ""
private var _simpletext: String = ""
private var _someother: String = ""
init(another: String, bannerpic: String, date: String, heading: String, pdflink: String, simpletext: String, someother: String ) {
self._another = another
self._bannerpic = bannerpic
self._date = date
self._heading = heading
self._pdflink = pdflink
self._simpletext = simpletext
self._someother = someother
}
var heading: String{
get {
return self._heading
}
}
}
ma view ou je dois utilisé les datas
struct NewView: View {
@State var showSetting = false
//MARK: Properties
@ObservedObject var session = ActivityModelFirebase()
var body: some View {
NavigationView{
ScrollView {
Button(action: {
//pour mon test
// ici il me retourne 0
print(session.activities.count)
}, label: {
Text("test")
})
ListRowView()
}
.navigationTitle("Actus")
.navigationBarItems(trailing: Button(action: {
self.showSetting.toggle()
}, label: {
Image(systemName: "slider.horizontal.3")
.foregroundColor(.black)
.font(Font.system(size: 30))
}).fullScreenCover(isPresented: $showSetting, content: {
SettingView()
}))
}.onAppear(perform: {
// le init
getActivities()
})
}
func getActivities() {
// je remplir pour avoir accès a mes datas
ActivityModelFirebase().getActivities()
}
}
Quand je fait un print(session.activities.count) il me retoune 0 donc je ne sais pas ou j’ai merdé lol .
Merci d’avance.