2012-03-23 2 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

+0

감사합니다. 감사합니다. – Cameron

답변

0

왜 당신이 PLIST에 문자열 이름을 저장하거나 접근 할 상수하지 않는

난 아직도이 필요해야합니까 , 또는 로컬 배열? 예를 들어

:
0 -> [stringValues ​​objectAtIndex : 0] -> "홈"
는 1 -> [stringValues ​​objectAtIndex : 1] -> "멀리"

는의 아래로 가정 해 봅시다 텍스트를 "집"과 "자리 비움"으로 변경하려는 경우, 상수 또는 배열이나 기타 등을 통해 핵심 데이터에 저장되지 않은 문자열을 영구 int로 나타내면 문자열의 일관성을 유지하고 변화하는 능력.

종류가 키 - 값어치와 비슷합니다.

0

location 속성의 형식은 NSString *

관련 문제