2011-07-19 8 views
1

私のアプリケーションでNSDateComponentsをたくさん使用しています。コードは長く、私はたくさんのコピーを貼り付けなければなりません。それはプログラミングで起こるとき、何かがより良くできるというサインです:)。 私はその質問のためのチェックが入っ答えを読んで、すべての興奮:構造体にNSDateComponentsがラップされていますか?

NSDate get year/month/day

(コメントを読む) どのように私は、構造体の上にそれらをラップすることができますか?申し訳ありませんが、それは本当に初心者の質問ですが、よく...私は初心者です。 それに対処する他の方法はありますか? ありがとう!あなたはこのようなあなたの構造を宣言することができ

答えて

2

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]; 
+0

ありがとう、それはきれいです。 – strave

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 

警告:私は実際には現在、仕事でイムので、これをコンパイルしていません。家に帰るときに論理を検証します。

+0

私はこの解決策が大好きです。私はそれをテストし、どれが一番うまくいくかをチェックします。 – strave

関連する問題