我使用下面的NSManagedObject這是自動Xcode中產生的:Objective-C的自定義的getter/setter
@interface Portion : NSManagedObject
{
}
@property (nonatomic, retain) NSNumber * volume;
我想創建一個自定義的getter/setter取決於毫升/盎司之間轉換是什麼用戶已經設置,這樣數據庫總是存儲相同的值,並自動轉換爲首選單位。我的最新嘗試如下所示:
#import "Portion.h"
#import "SettingHandler.h"
#define MILLILITERS_PER_OUNCE 29.5735296
@implementation Portion
@dynamic volume;
- (void) setVolume:(NSNumber *) number {
if ([SettingHandler getUnitsTypeShort] == @"oz") {
[self setValue:number forKey:@"volume"];
} else {
[self setValue:[NSNumber numberWithFloat:[number floatValue] * MILLILITERS_PER_OUNCE] forKey:@"volume"];
}
}
- (NSNumber *) volume {
if ([SettingHandler getUnitsTypeShort] == @"oz") {
return [self valueForKey:@"volume"];
} else {
return [NSNumber numberWithDouble: [[self valueForKey:@"volume"] floatValue] * MILLILITERS_PER_OUNCE];
}
}
setVolume調用最終調用自身導致無限循環。我猜測有一種方法可以做到這一點,但我不知道它是什麼,有什麼想法?
吱吱。你可能的意思是:'[@「oz」isEqualToString:[SettingHandler getUnitsTypeShort]]'而不是:'[SettingHandler getUnitsTypeShort] == @「oz」' – justin 2010-11-10 04:46:12