2012-03-23 75 views
0

我有一個在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

這看起來像是一個NSValueTransformer的工作。 – rickster 2012-03-24 00:56:52

+0

我會檢查一下,謝謝 – Cameron 2012-03-24 08:56:33

回答

0

你爲什麼不救字符串名稱中的plist,或訪問常量,還是本地數組?

例如:
0 - > [stringValues objectAtIndex:0] - > 「家」
1 - > [stringValues objectAtIndex:1] - > 「離開」

假設下如果使用持久性int表示字符串(通過常量或數組或其他方式,而不是保存在覈心數據中),則您想要更改文本「home」和「away」的道路,您可以保持字符串一致,並使改變的能力。

有點像鑰匙 - >價值的東西。

0

位置屬性應該是NSString類型*