NSDateComponents包含在结构中?

时间:2011-07-19 19:45:56

标签: iphone objective-c ios ipad struct

我在我的应用程序中使用了很多NSDateComponents。代码很长,我不得不做很多复制&粘贴,当编程中发生这种情况时,这表明某些事情可以做得更好:)。 我阅读了那个问题的答案,并且非常兴奋:

NSDate get year/month/day

(阅读评论) 如何将它们包装在结构上?对不起,如果这是一个真正的初学者问题,但是......我是初学者。 或者还有其他方法可以解决这个问题吗? 谢谢!

2 个答案:

答案 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
警告:我实际上并没有编译这个,因为我现在在工作。我回家时会验证逻辑。