-1

Scheduleという名前のクラスがあり、その中に 4 つのプロパティがあります。

@interface Schedule : NSObject  {
}

@property (strong, nonatomic) NSDate *apptStartTime;
@property (strong, nonatomic) NSDate *apptEndTime;
@property (strong, nonatomic) NSString *clientKey;
@property (strong, nonatomic) NSString *scheduleName;

-(BOOL) occursOnDate: (NSDate *) dateOfAppointment;
@end

以前にデータを使用して2つの「Schedule」オブジェクト(テスト用)を作成し、両方をNSMutableSetに配置した別のクラスがあります。これはそのためのコードです:

    //  schedule1
Schedule *schedule1 = [[Schedule alloc]init];
schedule1.apptStartTime = scheduleStartDate;  //  today's date
schedule1.apptEndTime = [scheduleStartDate dateByAddingTimeInterval:60*60];  //  add 1 hour
schedule1.clientKey = @"GeoffMarsh3911";
schedule1.scheduleName = @"schedule1";

//  schedule2
Schedule *schedule2 = [[Schedule alloc]init];  //  two days after schedule1
schedule2.apptStartTime = [scheduleStartDate dateByAddingTimeInterval:timeInterval*2];  //  add two days to first appointment
schedule2.apptEndTime = [schedule2.apptStartTime dateByAddingTimeInterval:60*60];  //  add 1 hour tpo start of appointment
schedule2.clientKey = @"KellieJellyBelly3878";
schedule2.scheduleName = @"schedule2";

//  create NSMutableSet for schedule objects
NSMutableSet *setOfSchedules = [NSMutableSet setWithCapacity:5];
[setOfSchedules addObject:schedule1];
[setOfSchedules addObject:schedule2];

さて、次のように、NSMutableSet にあるスケジュールを取得して NSArray に入れて作業できるようにする別のクラスがあります。

    NSArray *scheduleList = [setOfSchedules allObjects]; 

ここに画像の説明を入力

問題は、 apptStartTimeなどのscheduleList内のフィールドにアクセスできないように見えるため、それを操作できることです (別の日付と比較するなど)。

NSMutableSet を NSArray に入れるよりも、これを行うためのより良い方法はありますか? NSArray の個々のフィールドにアクセスするにはどうすればよいですか?

4

2 に答える 2

1

このようなものはうまくいくかもしれません:

for (Schedule *schedule in setOfSchedules) {
    NSDate *startTime = schedule.apptStartTime;
    // rest of your stuff
}

または、配列を使用してforループを使用するように変更しますscheduleList

Schedule *schedule = scheduleList[someIndex];
NSDate *startTime = schedule.apptStartTime;
于 2014-03-14T23:36:42.080 に答える
1

次のように NSArray からオブジェクトを取得する必要があります。

Schedule *schedule = [scheduleList objectAtIndex:0];

schedule次に、通常どおりオブジェクトのプロパティにアクセスします。

myTime = schedule.apptStartTime;

オブジェクトを NSMutableSet と NSArray の両方に持つことはあまり意味がありませんが。たぶん、そのうちの1つを取り除くことができますか?

于 2014-03-14T23:38:05.950 に答える