Objective c EKCalendar标题返回空ios 11

Objective c EKCalendar标题返回空ios 11,objective-c,null,title,ios11,ekcalendar,Objective C,Null,Title,Ios11,Ekcalendar,这段代码在ios 11之前运行良好,但现在在ios 11中,ID运行良好,但标题返回null NSArray *availablePersonalCalendars = [eventStore calendarsForEntityType:EKEntityTypeEvent]; for (EKCalendar *cal in availablePersonalCalendars) { NSLog(@"ID: %@", cal.calendarIdentifier); NSLo

这段代码在ios 11之前运行良好,但现在在ios 11中,ID运行良好,但标题返回null

NSArray *availablePersonalCalendars = [eventStore calendarsForEntityType:EKEntityTypeEvent];

for (EKCalendar *cal in availablePersonalCalendars) {

    NSLog(@"ID: %@", cal.calendarIdentifier);
    NSLog(@"Title: %@", cal.title)
}
如果你知道如何解决这个问题,请帮助我。
谢谢,

我已经使用了此代码,并且在iOS 11中工作正常:

EKEventStore *store = [[EKEventStore alloc] init];
[store requestAccessToEntityType:EKEntityTypeEvent
                      completion:^(BOOL granted, NSError * _Nullable error) {
       NSArray *availablePersonalCalendars = [store calendarsForEntityType:EKEntityTypeEvent];

       for (EKCalendar *cal in availablePersonalCalendars) {

          NSLog(@"ID: %@", cal.calendarIdentifier);
          NSLog(@"Title: %@", cal.title);
       }
  }];
还要确保在plist中包含NSCalendarsUsageDescription键,以及如何使用此信息的解释文本


您应该存储对
EKEventStore
对象的引用。不知何故,这与日历标题的缺失有关。在查询日历之前,不要忘记请求权限

目标-C

@interface Some ()

@property (nonatomic) EKEventStore *store;
@property (nonatomic) NSArray<EKCalendar *> *calendars;

@end

@implementation Some

- (void)prepare
{
  self.store = [EKEventStore new];
  self.calendars = @[];
}

- (void)loadCalendars
{
  self.calendars = [self.store calendarsForEntityType:EKEntityTypeEvent];
}

@end
let store = EKEventStore()
var calendars: [EKCalendar] = []

func loadCalendars() {
  calendars = store.calendars(for: .event)
}

好的,完整的答案。在我的例子中,通过将EKEventStore*存储定义为类变量而不是局部变量,解决了我的问题。