0

次の属性と関数を宣言するカスタム 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:]:

誰でもこれで私を助けることができますか?

敬具。

4

2 に答える 2

0

NSCopying プロトコル (NSDate など) を実装したオブジェクトのみをコピーできます。EKEvent は NSCopying プロトコルを実装していないため、コピーを使用して EKEvent インスタンスを作成することはできません。コピーを使用しないように、イベント プロパティを読み書き可能にすると便利です。

于 2013-02-06T12:29:04.107 に答える
0

イベントの空き状況の設定。この設定は、CalDAV および Exchange サーバーによって使用され、スケジュール目的でイベントを処理する方法を示します。イベントのカレンダーが可用性設定をサポートしていない場合、このプロパティの値はEKEventAvailabilityNotSupportedです。

このリンクEKEventAvailabilityと、この EKEvent も参照してください

これがお役に立てば幸いです...

于 2013-02-06T12:18:12.787 に答える