例えばこんなクラスがあるとする。
Customer.h
@interface Customer : NSManagedObject
{
}
@property (nonatomic, retain) NSString * address1;
@property (nonatomic, retain) NSString * postcode;
@property (nonatomic, retain) NSString * lastname;
@property (nonatomic, retain) NSString * address2;
@property (nonatomic, retain) NSString * firstname;
@property (nonatomic, retain) NSDate * birthdate;
@property (nonatomic, retain) NSString * firstnameKana;
@property (nonatomic, retain) NSString * lastnameKana;
@end
birthdate(誕生日)から現時点での年齢を計算したいのだが、これをプロパティとして取得できるようにしたい。これをカテゴリで実装する。
こんな感じ。
Customer+Extension.h
#import "Customer.h"
@interface Customer (Extension)
@property (assign, nonatomic, readonly) NSInteger age;
@end
追加メソッドをプロパティとして実装できる。
@implementation Customer (Extension)
- (NSInteger)ageForBirthday_:(NSDate *)dateOfBirth {
:
}
- (NSInteger)age
{
return [self ageForBirthday_:self.birthdate];
}
これを使う場合はこんな感じ。
#import "Customer+Extension.h"
cell.detailTextLabel.text =
[NSString stringWithFormat:@"%d歳", customer.age];
参考)
Calculate age in objective-c | I ticked the wrong box
Cocoaの日々: CoreData - Xcodeでモデルクラスを自動生成する