如何访问使用NSMutableSet创建的NSArray中的字段?

时间:2014-03-14 23:32:14

标签: objective-c nsarray nsmutableset

我有一个名为日程表的课程,其中包含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

我有另一个类,我之前使用数据创建了两个“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中的 schedule 并将它们放在NSArray中,以便我可以使用它们,如下所示:

    NSArray *scheduleList = [setOfSchedules allObjects]; 

enter image description here

问题是我似乎无法进入 scheduleList 中的字段,例如 apptStartTime ,所以我可以使用它(与另一个进行比较)约会等)。

有没有更好的方法来实现这一点,而不是将NSMutableSet放在NSArray中?如何访问NSArray中的各个字段?

2 个答案:

答案 0 :(得分:1)

这样的事情可行:

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

或者使用数组并更改for循环以使用scheduleList

Schedule *schedule = scheduleList[someIndex];
NSDate *startTime = schedule.apptStartTime;

答案 1 :(得分:1)

您需要从NSArray中获取对象:

Schedule *schedule = [scheduleList objectAtIndex:0];

然后像往常一样访问schedule对象的属性。

myTime = schedule.apptStartTime;

虽然在NSMutableSet和NSArray中同时使用对象没有多大意义。也许你可以摆脱其中一个?