带有 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 类的主要内容,如果未能解决你的问题,请参考以下文章