我在我的应用程序中使用了很多NSDateComponents。代码很长,我不得不做很多复制&粘贴,当编程中发生这种情况时,这表明某些事情可以做得更好:)。 我阅读了那个问题的答案,并且非常兴奋:
(阅读评论) 如何将它们包装在结构上?对不起,如果这是一个真正的初学者问题,但是......我是初学者。 或者还有其他方法可以解决这个问题吗? 谢谢!
答案 0 :(得分:3)
您可以声明您的结构:
struct DateParts
{
NSInteger day;
NSInteger month;
NSInteger year;
};
然后分配部分:
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:[NSDate date]];
DateParts theParts;
theParts.day = [components day];
theParts.month = [components month];
theParts.year = [components year];
答案 1 :(得分:2)
为什么要将它们保存在结构中? NSDateComponents对象已经包含了您需要的所有信息,只需将其传递给您的程序即可。如果您想让这个变得非常简单,您实际上可以将组件提取逻辑添加到类别中的NSDate中。像这样:
在NSDate + MyComponents.h中
@interface NSDate (MyComponents)
-(NSDateComponents *) components: (NSUInteger) unitFlags;
@end
在NSDate + MyComponents.c
中@implementation NSDate (MyComponents)
-(NSDateComponents *) components: (NSUInteger) unitFlags {
return [[NSCalendar currentCalendar] components: unitFlags fromDate: self];
}
@end
警告:我实际上并没有编译这个,因为我现在在工作。我回家时会验证逻辑。