我在CoreData数据模型中有一个16的整数属性(位置), 但是整数只是一个标志,我想在使用类的实例时读/写为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
答案 0 :(得分:0)
为什么不将字符串名称保存在plist,或者可访问的常量或本地数组中?
例如:
0 - > [stringValues objectAtIndex:0] - >“home”
1 - > [stringValues objectAtIndex:1] - >“离开”
让我们说你要改变文本“home”和“away”,如果你用持久性int表示字符串(通过常量或数组或其他任何,不保存在核心数据中),你可以保留你的字符串一致,并且有能力改变。
有点像关键 - >有价值的东西。
答案 1 :(得分:0)
location属性应为NSString *
类型