Как получить доступ к полям в NSArray, созданном с помощью NSMutableSet?

У меня есть класс, который называется 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

У меня есть другой класс, где я ранее создал два объекта "Расписание" (для тестирования) с данными и поместил оба в 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]; 

Проблема в том, что мне кажется, что я не могу добраться до полей в scheduleList, например, apptStartTime, поэтому я могу работать с ним (сравнить с другой датой и т. Д.).

Есть ли лучший способ сделать это, вместо того, чтобы поместить NSMutableSet в NSArray? И как мне получить доступ к отдельным полям в NSArray?

2 ответа

Решение

Вам нужно получить объект из NSArray следующим образом:

Schedule *schedule = [scheduleList objectAtIndex:0];

А затем получить доступ к свойствам schedule Объект как обычно.

myTime = schedule.apptStartTime;

Хотя нет смысла иметь ваши объекты как в NSMutableSet, так и в NSArray. Может быть, вы могли бы избавиться от одного из них?

Нечто подобное может сработать:

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

Или используйте массив и измените for цикл для использования scheduleList,

Schedule *schedule = scheduleList[someIndex];
NSDate *startTime = schedule.apptStartTime;
Другие вопросы по тегам