带有 EKEventAttribute 的自定义 NSObject 类

Posted

技术标签:

【中文标题】带有 EKEventAttribute 的自定义 NSObject 类【英文标题】:custom NSObject class with EKEventAttribute 【发布时间】:2013-02-06 12:05:53 【问题描述】:

我有一个自定义的 NSObject 类,我在其中声明了以下属性和函数。

@property (nonatomic, retain, readonly) NSDate *date;
@property (nonatomic, retain, readonly) NSString  *dateTime;
@property (nonatomic, retain, readonly) NSString *title;
@property (nonatomic, retain, readonly) EKEvent *event;

+(Appointment*)AppointmentNamed: (NSString *)title 
                       dateTime:(NSString *)dateTime
                           date:(NSDate *)date 
                          event:(EKEvent *)event;

-(id) initWithName:(NSString *)title 
          dateTime:(NSString *)dateTime 
              date:(NSDate *)date 
             event:(EKEvent *)event;

在我的 .m 中,我执行以下操作。

+(Appointment*)AppointmentNamed:(NSString *)aTitle
                       dateTime:(NSString *)aDateTime 
                           date:(NSDate *)aDate 
                          event:(EKEvent *)aEvent 
    return [[Appointment alloc]initWithName:aTitle
                                   dateTime:aDateTime 
                                       date:aDate 
                                      event:aEvent];

-(id)initWithName:(NSString *)aTitle 
         dateTime:(NSString *)aDateTime 
             date:(NSDate *)aDate 
            event:(EKEvent *)aEvent
    if((self = [super init]))
        date = [aDate copy];
        dateTime = [aDateTime copy];
        title = [aTitle copy];
        event = [aEvent copy];

    
    return self;

我通过以下方式添加新约会。

[appointments addObject:[Appointment AppointmentNamed:event.title 
                                             dateTime:dateString 
                                                 date:event.endDate 
                                                event:event]];

但是当我这样做时,我收到一个抱怨 -[EKEvent copyWithZone:]: 的错误

谁能帮我解决这个问题?

亲切的问候。

【问题讨论】:

只是一个疯狂的猜测,但您是否尝试过将您的属性命名为 .event 以外的名称?看到这2个问题:Question 1Question 2 【参考方案1】:

活动的可用性设置。 CalDAV 和 Exchange 服务器使用此设置来指示应如何处理事件以进行安排。如果事件的日历不支持可用性设置,则此属性的值为 EKEventAvailabilityNotSupported

查看此链接EKEventAvailability 以及此链接EKEvent

希望对你有帮助...

【讨论】:

@Pras Joshi,感谢您的回答,但将 (nonatomic, retain, readonly) 更改为 (readwrite, retain) 成功了!【参考方案2】:

您只能复制已实现 NSCopying 协议的对象(例如 NSDate)。 EKEvent 没有实现 NSCopying 协议,因此您无法使用复制创建 EKEvent 实例。将事件属性设为可读写可能会很有用,因此您不能使用副本。

【讨论】:

以上是关于带有 EKEventAttribute 的自定义 NSObject 类的主要内容,如果未能解决你的问题,请参考以下文章

带有 fmt 的自定义格式说明符用于自定义类

带有自定义数据的自定义 UIActivity

UICollectionViewCell 内带有 UITableView 的自定义单元格

带有公会编号的自定义状态[关闭]

带有标题的自定义 UITableViewCell - 约束

带有 PureLayout 的自定义 UIButton