objective-c - 将事件保存到 CalCalendar 是否只存储指向 CalEvent 的指针,而不是副本?

标签 objective-c macos cocoa calendar

如果我想将相同类型的事件保存到两个日历中,似乎我必须创建两个单独的事件对象,这是正确的吗?

作为示例,请参阅下面的代码。事件被保存到链接到“工作人员”的日历,然后保存到链接到“任务”的日历。

- (BOOL)setTask:(MJSTask *)aTask
   fromDate:(NSDate *)from
     toDate:(NSDate *)to
{
    NSError *err = nil;
    CalEvent *e = [CalEvent event];
    NSString *task = [[aTask shortName] uppercaseString];
    // Set the first calendar
    [e setTitle:task];
    [e setIsAllDay:NO];
    [e setStartDate:[aTask start]];
    [e setEndDate:[aTask end]];
    [e setLocation:[self lastName]];
    [e setCalendar:[self calendar]];
    if ( ![[CalCalendarStore defaultCalendarStore] saveEvent:e span:CalSpanThisEvent error:&err] )
    {
       <error handling>
    }
    // Set the second calendar
    NSString *titleString = [NSString stringWithFormat:@"%@ (%@)",[self lastName],task];
    [e setTitle:titleString];
    [e setLocation:[aTask longName]];
    [e setCalendar:[[aTask taskTemplate]calendar]];
    if ( ![[CalCalendarStore defaultCalendarStore] saveEvent:e span:CalSpanThisEvent error:&err] )
    {
        <error handling>
    }
    return FALSE;    
}

如果我注释掉保存日历 2 的行,我会得到日历 1 中的事件。但是如果我不这样做,这些对象似乎只会保存到最后一个日历(日历 2)。

最佳答案

正确。通过保存两次,第二次是通过将事件移动到不同的日历来有效地更新事件

关于objective-c - 将事件保存到 CalCalendar 是否只存储指向 CalEvent 的指针,而不是副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10899134/

相关文章:

iphone - CGImageCreate 中的颜色失真

objective-c - 'application environment'、 'Framework'、 'API' 的定义

macos - NSUserNotification 的样式

git - 具有 MAC 的 Parallels 中的 Visual Studio 不断重新加载项目

macos - 沙盒环境中基于 SQLite 的 NSPersistentDocument

objective-c - 如何在 NSLog 中显示 NSString

macos - cocoa 界面生成器中的发送操作和接收操作

ios - 使用自动布局出现键盘时无法更改 UITableView 高度约束

objective-c - NSThread 中的 NSUrlConnection - 没有执行委托(delegate)!

swift - 如何在 OSX 应用程序中的本地主机上设置 HTTP 监听器