无法在日历中添加事件
问题描述:
我想在“someName”日历中添加事件。如果具有给定名称的日历不存在,那么我将以编程方式创建一个日历。我的问题是,当(EKSource类型的)localSource结果为null时,事件不会被添加。我添加了3个检查来确保我获得了localSource的值,但即使在某些情况下,localSource也是零。所以在我的手机上,事件得到了增加,但在我朋友的手机上却没有。无法在日历中添加事件
我跟着各个岗位了,我明白EKSource可用6种类型:https://developer.apple.com/reference/eventkit/eksourcetype
我无法理解的是在什么情况下localSource会是零?这在正常语言中意味着什么?我可以从代码中做些什么来使其不为零或设备上的用户需要做什么?
- (void)setCalendar {
NSArray *calendars = [self.eventStore calendarsForEntityType:nil];
NSString *calendarTitle = someName;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"title matches %@", calendarTitle];
NSArray *filtered = [calendars filteredArrayUsingPredicate:predicate];
if ([filtered count]) {
self.calendar = [filtered firstObject];
}
else {
self.calendar = [EKCalendar calendarForEntityType:EKEntityTypeEvent eventStore:self.eventStore];
self.calendar.title = calendarTitle;
EKSource *localSource;
for (EKSource *source in self.eventStore.sources)
{
//if iCloud account is setup then add the event in that calendar
if (source.sourceType == EKSourceTypeCalDAV && [source.title isEqualToString:@"iCloud"])
{
localSource = source;
break;
}
}
if (localSource == nil)
{
for (EKSource *source in self.eventStore.sources)
{
//if iCloud is not setup then look for local source
if (source.sourceType == EKSourceTypeLocal)
{
localSource = source;
break;
}
}
}
if (!localSource) {
localSource = [self.eventStore defaultCalendarForNewEvents].source;
}
self.calendar.source = localSource;
NSError *calendarErr = nil;
BOOL calendarSuccess = [self.eventStore saveCalendar:self.calendar commit:YES error:&calendarErr];
if (!calendarSuccess) {
NSLog(@"Error while updating calendar %@", calendarErr);
}
}
}
PS:我有权添加日历事件。
答
本地来源描述了用户日历中的'我的iphone','icloud','gmail'等字段。在我的代码中,当用户设置icloud帐户但没有授予icloud帐户写入日历时,本地源为空。因此,即使应用程序有权写入日历但本地源为零,因此,向日历添加事件失败。
我的代码将在2给出案件日历:
- 用户已经登录到iCloud中,并已获准到icloud写日历。在这种情况下,本地源不是零,并且日历在“iCloud”中创建,名称为“someName”。
- 用户还没有登录icloud。现在,日历是在'我的iphone'本地源中使用名称'someName'创建的。
您是否有权限操作朋友的日历?你的朋友是否允许你的应用程序做到这一点? – NSDmitry
是的,我拥有所有需要的权限。 –
什么是你的和朋友的iPhone的iOS版本? –