jon*_*jon 1 time cocoa objective-c nsdate
我代表一个人的班级有一种计算该人年龄的方法:
@interface Student : NSObject
@property (strong) NSDate *dob;
// This method will work out the person's age in calendar years
- (NSDateComponents*)ageCalculation:(NSDate*)dob;
Run Code Online (Sandbox Code Playgroud)
这是类实现文件
@implementation Student
- (NSDateComponents*)ageCalculation:(NSDate*)dob {
NSDate *now = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSCalendarUnit units = NSYearCalendarUnit | NSMonthCalendarUnit;
NSDateComponents *components = [calendar components:units
fromDate:dob
toDate:now
options:0];
return components;
}
@end
Run Code Online (Sandbox Code Playgroud)
我不确定我是否正确行事,但是:
Student *student1 = [[Student alloc] init];
[student1 setDob:aDateOfBirth];
NSDateComponents *ageComponents = [student1 ageCalculation:aDateOfBirth];
Run Code Online (Sandbox Code Playgroud)
我应该怎么做这个方法的结果?我怎样才能ageCalculation:使用我已设定的日期?
有几件事可以注意到.首先,计算年龄的代码很好,除了我不明白为什么你回来NSDateComponents而不仅仅是年龄.
我就是这样做的
- (NSInteger)age {
NSDate *today = [NSDate date];
NSDateComponents *ageComponents = [[NSCalendar currentCalendar]
components:NSYearCalendarUnit
fromDate:self.dob
toDate:today
options:0];
return ageComponents.year;
}
Run Code Online (Sandbox Code Playgroud)
您只对year组件感兴趣,所以请将其返回而不是NSDateComponents.使用self.dob而不是参数获取您之前设置的日期.