具体的には、「statusCode」属性が変換可能に設定された NSManagedObject と、NSStrings から NSNumbers に、またはその逆に変換する可逆値トランスフォーマー サブクラスがあるとします。JSON を受け取り、JSON の「ステータス」キーからの文字列が、NSManagedObject でそのステータス コードを表す NSNumber に自動的にマップされるように、値トランスフォーマーを使用するという考え方です。逆に、NSManagedObject をサーバーにアップロードすると、その時点でステータス属性が NSNumber から JSON の文字列に変換されます。
ここまでは順調ですね。しかし、NSManagedObjec の status プロパティから単純な int を取得できるようにしたい場合はどうすればよいでしょうか。つまり、3 つのケースをカバーするために嘘をつきます。
myManagedObject.status = [JSONResponse valueForKey:@"status"]
(トランスフォーマーを使用して NSString -> NSNumber を実行する必要があります)[JSONforUpload setValue:myManagedObject.status forKey:@"status"]
(トランスフォーマーを使用して NSNumber->NSString を実行する必要があります)- コードの他の場所から、次の行に沿ったもの:
if(myManagedObject.status & statusInProgress) ...
statusInProgress は列挙型です。
値トランスフォーマーを一時的に無効にできると思っていますが、NSManagedObject がそれを参照しているかどうか、または明らかに登録済みトランスフォーマーのテーブルを保持している NSValueTransformer クラスから無効にする必要があるかどうかはわかりませんか?
3番目のケースでは、ビットごとの比較を行うだけでよいことはわかっていますが、このオブジェクトのユーザーの観点から、自動的に返される[myManagedObject.status intValue]
方法があるかどうか疑問に思っています。intValue]
何か案は?