fetchRemindersMatchingPredicate不检索新数据

问题描述 投票:1回答:1

我已经在我的应用程序中使用了EventKit多年(从macOS 10.10开始),但它在Mojave中有一个奇怪的问题。

以前,一旦我收到EKEventStoreChangedNotification,我可以使用以下方法查询已更改的提醒:

NSPredicate *predicate = [self.eventStore predicateForRemindersInCalendars:@[self.taskCalendar]];  
    [self.eventStore fetchRemindersMatchingPredicate:predicate completion:^(NSArray *reminders) {  
       self.allFetchedTasks = reminders;  
  }];  

像冠军一样工作。在该块中设置断点,我可以切换到提醒,更改任务标题,立即弹回调试器,提醒数组将进行更改(通过“po [reminders.firstObject title]”)。

但是,现在在Mojave中,fetch似乎返回旧信息。一旦我在Reminders中更改任务标题,我就会在调试器中抛回,但提醒数组仍然包含旧信息。也就是说,[reminders.firstObject title]仍然显示原始标题,而不是当前在提醒中存在的标题。我可以继续更改提醒中的标题,每次我重新进入调试器,我仍然会看到原始标题。

我还尝试使用calendarItemsWithExternalIdentifier,但它也返回原始值。

如果我重新启动我的应用程序然后它会抓取最新信息,但是,由于更改通知而导致的后续提取会再次返回原始值。

它看起来不像Mojave的EventKit有任何我可以控制的新缓存。还有什么我想念的吗?我现在每次都需要重建我的self.eventStore吗?

eventkit
1个回答
0
投票

这已在Apple的macOS 10.14.4 Beta 3版本中修复。

© www.soinside.com 2019 - 2024. All rights reserved.