2013-04-05 3 views
1

특히, "statusCode"속성이 transformable로 설정된 NSManagedObject와 NSStrings에서 NSNumbers로 또는 그 반대로 변환 할 수있는 reversible value transformer 하위 클래스가 있다고 가정 해보십시오. JSON을 수신하고 JSON의 "상태"키에서 문자열을 자동으로 NSManagedObject의 해당 상태 코드를 나타내는 NSNumber에 매핑하도록 값 변환기를 사용하는 것이 아이디어입니다. 반대로 NSManagedObject를 서버에 업로드 할 경우 해당 상태 속성은 NSNumber에서 JSON 문자열로 변환됩니다.NSManagedObject 특성에 대해 NSValueTransformer를 조건부로 사용하지 않도록 설정할 수 있습니까?

지금까지 그렇게 좋았습니다. 하지만 NSManagedObjec의 status 속성에서 간단한 int를 얻을 수 있기를 원한다면 코드의 열거 형과 함께 사용할 수 있습니까? 이다 , 나는 3 예를 충당하기 위해 거짓말을 것 :

  1. myManagedObject.status = [JSONResponse valueForKey:@"status"] (있는 NSString 할 변압기를 사용한다 ->의 NSNumber)
  2. [JSONforUpload setValue:myManagedObject.status forKey:@"status"] (NSNumber-을 수행하는 변압기를 사용한다>는 NSString)
  3. 에서을 코드의 다른 부분, 다음 행의 모든 ​​것 : if(myManagedObject.status & statusInProgress) ... statusInProgress는 열거 형입니다.
내가 일시적으로 값 변압기를 사용하지 않도록 할 수 생각하고

NSManagedObject가에 대한 참조가있는 경우, 또는 내가 분명히 등록의 테이블을 유지하는 NSValueTransformer 클래스에서 사용하지 않도록 설정하는 경우는, 그러나 나는 아무 생각이 없다 변압기?

나는 3 번째의 경우에 단지 [myManagedObject.status intValue]을 수행하고 비트 비교를 수행 할 수 있음을 알고 있지만,이 객체의 관점에서 사용자가 자동으로 반환 할 수있는 방법이 있는지 궁금합니다. .

아이디어가 있으십니까?

답변

0

한 가지 방법은 문자열과 열거 된 값을 반대로 전환 할 수 있도록 변환기에 속성을 추가하는 것입니다. 그게 작동하지만, 열거 형 변 환기를 수행하고 문자열 대신 transformable 속성을 사용하면 (대신 관리 대상 객체의 속성을 int로 남김) JSON < -> 객체 변환에만 인스턴스화합니다. 그 후, 코드 전체에서 나는 int 속성을 그대로 사용합니다.

0

왜 JSON 변환을위한 두 가지 추가 메서드를 작성하고 속성을 정수로 남겨 두지 않습니까? 그렇다면 두 세계의 최고가 될 것입니다.

+0

입니다. 그리고 만약 그렇지 않다면 되돌릴 수 있습니다. 그러나 그것을 끄고 변환 가능한 속성을 유지할 수있는 방법이 있는지 궁금합니다. – SaldaVonSchwartz

0

이 엔티티에 고유 한 관리 객체 하위 클래스가 있다고 가정하면 NSNumberint 값 사이의 변환을 캡슐화하기 위해 다른 접근 자 메서드 쌍을 클래스에 간단히 추가 할 수 있습니다. (또는 모델의 일부가 될 필요가있는 경우 일시적인 속성을 추가하십시오. 그러나 값을 동기화하기 위해 사용자 정의 접근자를 작성해야합니다.) 내 첫 번째 접근이었고 그래도 작동하는

관련 문제