我在我的應用程序中使用了很多NSDateComponents。代碼很長,我必須做很多複製&粘貼,當編程發生時,這是一個跡象表明,可以做得更好:)。 我讀了這個問題的答案打勾,並得到所有興奮:包裝在結構中的NSDateComponents?
(閱讀評論) 我怎樣才能將它們包裝在一個結構?對不起,如果這是一個真正的初學者問題,但是...我是一個初學者。 或者還有其他方法可以解決這個問題嗎? 謝謝!
我在我的應用程序中使用了很多NSDateComponents。代碼很長,我必須做很多複製&粘貼,當編程發生時,這是一個跡象表明,可以做得更好:)。 我讀了這個問題的答案打勾,並得到所有興奮:包裝在結構中的NSDateComponents?
(閱讀評論) 我怎樣才能將它們包裝在一個結構?對不起,如果這是一個真正的初學者問題,但是...我是一個初學者。 或者還有其他方法可以解決這個問題嗎? 謝謝!
你可以聲明你的結構是這樣的:
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];
爲什麼讓他們在一個結構? 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
警告:我還沒有真正因爲即時通訊在工作編譯這個目前。當我回家時將驗證邏輯。
我很喜歡這個解決方案。我會測試它並檢查哪一個效果最好。 – strave
非常感謝,這很整齊。 – strave