Я создаю виджет сегодня, который похож на родной виджет календаря iOS, но показывает все события в течение следующих 24 часов.Я загружаю события календаря, используя EKEventStore().events(matching: aPredicate)
.Я на самом деле получаю все события, но большинство их свойств (например, местоположение, тревоги, календарь и т. Д.) Являются пустыми строками или nil
.
. Я обнаружил, что при печати массива событий на консоль все свойствавдруг имеют значения, и я могу легко получить доступ и отобразить их.Без печати я получаю поведение, описанное выше.
В моем EventManager
классе:
var events: [EKEvent]? // Will be accessed by the TodayViewController
func updateEvents() {
let store = EKEventStore()
requestAccess(store: store) // is also defined in this class
// Create Date Components for fetching
let calendar = Calendar.current
let today = Date()
var tomorrowComponents = DateComponents()
tomorrowComponents.day = 1
let tmrw = calendar.date(byAdding: tomorrowComponents, to: Date())
// Creating predicate
var calPredicate: NSPredicate? = nil
if let tomorrow = tmrw {
calPredicate = store.predicateForEvents(withStart: today, end: tomorrow, calendars: nil)
}
// Fetching events
if let aPredicate = calPredicate {
self.events = store.events(matching: aPredicate)
}
print("Events: \(events as Any)") // this line is very important
}
Что я пропустил, что делает это утверждение print(..)
необходимым?Или это просто странное поведение iOS?