J'utilise le NSManagedObject suivant qui a été généré automatiquement par Xcode:Objective-C sur mesure Getter/Setter
@interface Portion : NSManagedObject
{
}
@property (nonatomic, retain) NSNumber * volume;
Je voudrais créer un getter personnalisé/setter pour convertir entre ml/oz en fonction de ce que le l'utilisateur a défini, de cette façon la base de données stocke toujours la même valeur et elle est automatiquement convertie en unités préférées. Ma dernière tentative ressemble à ceci:
#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];
}
}
L'appel de setVolume finit par s'appeler lui-même provoquant une boucle infinie. Je suppose qu'il y a un moyen de le faire mais je ne sais pas ce que c'est, des idées?
psst.vous voulez probablement dire quelque chose comme: '[@" oz "isEqualToString: [SettingHandler getUnitsTypeShort]]' au lieu de: '[SettingHandler getUnitsTypeShort] == @" oz "' – justin