У меня есть целочисленный атрибут 16 (местоположение) в модели данных CoreData,
но целое число - это просто флаг, я хочу читать / писать как NSString при использовании экземпляров класса.
Как мне реализовать это, придерживаясь правил управляемых объектов?
Нужно ли мне еще иметь:
@property (nonatomic, retain) NSNumber *location;
/////
@dynamic location;
или я могу сделать что-то вроде этого:
@interface Game : NSManagedObject
@property(nonatomic, retain) NSString *location;
@end
@interface Game(PrimitiveAccessors)
- (NSNumber *)primitiveLocation;
- (void)setPrimitiveLocation:(NSNumber *)newLocation;
@end
@implementation Game
@dynamic location;
- (NSString *)location
{
[self willAccessValueForKey:@"location"];
NSString *location = nil;
if ([self primitiveLocation] == 0)
{
location = @"Home";
}
if ([self primitiveLocation] == 1)
{
location = @"Away";
}
[self didAccessValueForKey:@"location"];
return location;
}
- (void)setLocation:(NSString *)newLocation
{
[self willChangeValueForKey:@"location"];
if (newLocation == @"Home")
{
[self setPrimitiveLocation:0];
}
if (newLocation == @"Away")
{
[self setPrimitiveLocation:1];
}
[self didChangeValueForKey:@"location"];
}
@end