Ich möchte um Hilfe bitten, Erinnerungen zu erhalten. Scheint wie numberOfRowsInSection und wird aufgerufen, bevor eventStore.fetchReminders fertig ist. Hier ist mein Code:swift 3 numberofrowsinsection läuft vor viewwilllappear holt Erinnerungen
override func viewWillAppear(_ animated: Bool) {
print("****viewWillAppear")
super.viewWillAppear(true)
self.eventStore = EKEventStore()
self.reminders = [EKReminder]()
//Added to initialize
self.reminders.removeAll()
self.eventStore!.requestAccess(to: EKEntityType.reminder, completion:
{(granted, error) in
if granted
{
let predicate = self.eventStore.predicateForReminders(in: nil)
self.eventStore.fetchReminders(matching: predicate, completion: { (reminders: [EKReminder]?) -> Void in
self.reminders = reminders
DispatchQueue.main.async() {
//Added
self.reminders = reminders
self.tableView.reloadData()
}
})
}
else
{
print("The app is not permitted to access reminders, make sure to grant permission in the settings and try again")
}
})
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
print("*****numberOfRowsInSection")
print("numberOfRowsInSection reminders \(self.reminders.count)")
return self.reminders.count
}
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
print("****titleForHeaderInSection")
print("titleForHeaderInSection reminders \(self.reminders.count)")
return "test"
}
Ich versuchte es in viewDidLoad setzen, aber gleiche geschieht, die self.reminders.count in numberOfRowsInSection ist 0. Rückkehr ich auch fetchReminders versucht OUTSIDE von requestAccess zu nennen (weil ich dachte, requestAccess war nicht feuern), aber am Ende habe ich dasselbe. Gibt es irgendetwas, was ich falsch mache? Würde wirklich jede Beratung zu schätzen wissen!
Danke!
Können Sie versuchen, super.viewWillAppear() in Ihrem viewWillAppear hinzuzufügen? Außerdem solltest du folgendes in deiner viewDidLoad() aufrufen: self.eventStore! .requestAccess (zu: EKEntityType.reminder, Fertigstellung: – Mikael
hi mikael, danke! Ich habe den super.viewWillAppear hinzugefügt. Ich habe auch den requestAccess in viewDidLoad hinzugefügt Ich bekomme das gleiche Ergebnis :( – iceman
Zumindest bekommst du hier einen besseren Code. Selbst wenn es dein Problem nicht behoben hat;) froh zu sehen, dass du es beheben könntest. – Mikael