Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 日历存储:如何区分事件日历和任务日历?_Macos_Icalendar_Calendar Store - Fatal编程技术网

Macos 日历存储:如何区分事件日历和任务日历?

Macos 日历存储:如何区分事件日历和任务日历?,macos,icalendar,calendar-store,Macos,Icalendar,Calendar Store,我正在开发一个具有提醒组件的应用程序。我使用获取日历列表,并希望用户选择要向其中添加任务的日历。问题是,似乎没有区分事件日历和任务日历 NSArray* calendars = [[CalCalendarStore defaultCalendarStore] calendars]; for( CalCalendar* aCalendar in calendars ) { if( aCalendar.isEditable ) { NSLog( @"editable cale

我正在开发一个具有提醒组件的应用程序。我使用获取日历列表,并希望用户选择要向其中添加任务的日历。问题是,似乎没有区分事件日历和任务日历

NSArray* calendars = [[CalCalendarStore defaultCalendarStore] calendars];
for( CalCalendar* aCalendar in calendars ) {
    if( aCalendar.isEditable ) {
        NSLog( @"editable calendar: %@", aCalendar );
    }
}
这将产生:

editable calendar: CalCalendar <0x6e04d10> {UID = 8AA8FFAD-D781-47F7-9231-CF66E1753983; title = Work; notes = (null); color = NSCalibratedRGBColorSpace 0.054902 0.380392 0.72549 1; type = CalDAV; editable = 1}
editable calendar: CalCalendar <0x6e05000> {UID = A7F4A1B2-D1CF-4A20-9F84-CD1A1E99773E; title = Home; notes = ; color = NSCalibratedRGBColorSpace 0.72549 0.054902 0.156863 1; type = CalDAV; editable = 1}
editable calendar: CalCalendar <0x6e050f0> {UID = 43B14D2A-9976-461C-8EFE-5FA029381828; title = Personal; notes = (null); color = NSCalibratedRGBColorSpace 0.901961 0.784314 0 1; type = CalDAV; editable = 1}
editable calendar: CalCalendar <0x6e05140> {UID = F42EC365-20AC-4251-B45E-FB7F169928F0; title = Mac; notes = (null); color = NSCalibratedRGBColorSpace 0.054902 0.380392 0.72549 1; type = Local; editable = 1}
editable calendar: CalCalendar <0x6e05190> {UID = FF771FF9-3969-4001-BBA4-9B7B00E80291; title = Cloud 2; notes = (null); color = NSCalibratedRGBColorSpace 0.054902 0.380392 0.72549 1; type = CalDAV; editable = 1}
editable calendar: CalCalendar <0x6e051e0> {UID = 40234537-869C-4CC2-89B9-DD4F7D36C169; title = Groceries; notes = ; color = NSCalibratedRGBColorSpace 0.443137 0.101961 0.462745 1; type = CalDAV; editable = 1}
可编辑日历:CalCalCalendar{UID=8AA8FFAD-D781-47F7-9231-CF66E1753983;title=Work;notes=(null);color=NSCalibratedRGBColorSpace 0.054902 0.380392 0.72549 1;type=CalDAV;可编辑=1}
可编辑日历:CalCalendar{UID=A7F4A1B2-D1CF-4A20-9F84-CD1A1E99773E;title=Home;notes=;color=NSCalibratedRGBColorSpace 0.72549 0.054902 0.156863 1;type=CalDAV;可编辑=1}
可编辑日历:CalCalendar{UID=43B14D2A-9976-461C-8EFE-5FA029381828;title=Personal;notes=(null);color=NSCalibratedRGBColorSpace 0.901961 0.784314 0 1;type=CalDAV;可编辑=1}
可编辑日历:CalCalendar{UID=F42EC365-20AC-4251-B45E-FB7F169928F0;title=Mac;notes=(null);color=NSCalibratedRGBColorSpace 0.054902 0.380392 0.72549 1;type=Local;可编辑=1}
可编辑日历:CalCalendar{UID=FF771FF9-3969-4001-BBA4-9B7B00E80291;title=Cloud 2;notes=(null);color=NSCalibratedRGBColorSpace 0.054902 0.380392 0.72549 1;type=CalDAV;editable=1}
可编辑日历:CalCalendar{UID=40234537-869C-4CC2-89B9-DD4F7D36C169;标题=杂货;注释=;颜色=NSCalibratedRGBColorSpace 0.443137 0.101961 0.462745 1;类型=CalDAV;可编辑=1}
我知道前两个是活动日历,后四个是任务列表。而且,iCal肯定知道其中的区别,因为它只显示事件的事件日历和任务的任务日历

但似乎无法通过日历存储API以编程方式确定这一点,除非我遗漏了什么


更新:我发现我并不是唯一一个注意到这一点的人。我刚刚提交了我自己的报告,因为我对它不太满意,但我现在使用的解决方法是在每个日历中创建一个任务。如果尝试在事件日历中创建任务,则会出现错误。它看起来有点像:

- (BOOL) isCalendarAUsableTaskList:(CalCalendar*)aCalendar
{
    if( !aCalendar.isEditable ) return NO;

    // Try to make a task here.
    CalTask* newTask = [CalTask task];
    newTask.calendar = aCalendar;
    newTask.title = @"Test Item";
    NSError* anError = nil;
    if( ![[CalCalendarStore defaultCalendarStore] saveTask:newTask error:&anError] ) {
        // Couldn't make a task, this calendar is no bueno.
        NSLog( @"Error saving task to calendar %@ (%@)", aCalendar.title, [anError localizedDescription] );
        return NO;
    }

    // Created a task.  Now clean up on our way out.
    NSLog( @"Saved task to calendar %@", aCalendar.title );
    [[CalCalendarStore defaultCalendarStore] removeTask:newTask error:nil];

    return YES;
}

我对它不是很满意,但我现在使用的解决方法是在每个日历中创建一个任务。如果尝试在事件日历中创建任务,则会出现错误。它看起来有点像:

- (BOOL) isCalendarAUsableTaskList:(CalCalendar*)aCalendar
{
    if( !aCalendar.isEditable ) return NO;

    // Try to make a task here.
    CalTask* newTask = [CalTask task];
    newTask.calendar = aCalendar;
    newTask.title = @"Test Item";
    NSError* anError = nil;
    if( ![[CalCalendarStore defaultCalendarStore] saveTask:newTask error:&anError] ) {
        // Couldn't make a task, this calendar is no bueno.
        NSLog( @"Error saving task to calendar %@ (%@)", aCalendar.title, [anError localizedDescription] );
        return NO;
    }

    // Created a task.  Now clean up on our way out.
    NSLog( @"Saved task to calendar %@", aCalendar.title );
    [[CalCalendarStore defaultCalendarStore] removeTask:newTask error:nil];

    return YES;
}