使用EKEventAttribute定制NSObject类

时间:2013-02-06 12:05:53

标签: iphone ios objective-c nsobject ekevent

我有一个自定义的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:]:

的错误

有人可以帮我吗?

亲切的问候。

2 个答案:

答案 0 :(得分:0)

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

请参阅此链接EKEventAvailability以及此EKEvent

我希望这对你有帮助......

答案 1 :(得分:0)

您只能复制已实施NSCopying协议的对象(例如NSDate)。 EKEvent没有实现NSCopying协议,因此您无法使用copy创建EKEvent实例。可能使事件属性readwrite很有用,所以你不能使用copy。