2012-03-23 11 views
0

私はCoreDataデータモデルの整数16の属性(場所)を持っていますが、整数はフラグにすぎません。クラスのインスタンスを使用するときはNSStringとして読み書きしたいと思います。Core Data仮想属性を正しく実装する方法は?

管理対象オブジェクトのルールを守ってこれを実装する方法はありますか。

私が持っている必要がまだ必要です:

@property (nonatomic, retain) NSNumber *location; 
///// 
@dynamic location; 

または私はこのような何かを行うことができます:あなたは、文字列のplist内の名前、またはアクセスの定数を保存しないのはなぜ

@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

です。これはNSValueTransformerの仕事のようです。 – rickster

+0

私はそれを確認します、ありがとう – Cameron

答えて

0

を、またはローカル配列?例えば


0 - > [stringValues objectAtIndex:0] - > "ホーム"
1 - > [stringValues objectAtIndex:1] - > "離れ"

さんがダウンしましょうテキストを "home"と "away"に変更したい場合は、文字列(定数や配列などを介してコアデータに保存されていないもの)を永続的なintで表現すると、文字列を一貫性のある状態に保つことができます。変更する能力。

キーのようなものは値のものです。

0

locationプロパティのタイプはNSString *

関連する問題