1

具体的には、「statusCode」属性が変換可能に設定された NSManagedObject と、NSStrings から NSNumbers に、またはその逆に変換する可逆値トランスフォーマー サブクラスがあるとします。JSON を受け取り、JSON の「ステータス」キーからの文字列が、NSManagedObject でそのステータス コードを表す NSNumber に自動的にマップされるように、値トランスフォーマーを使用するという考え方です。逆に、NSManagedObject をサーバーにアップロードすると、その時点でステータス属性が NSNumber から JSON の文字列に変換されます。

ここまでは順調ですね。しかし、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]方法があるかどうか疑問に思っています。intValue]

何か案は?

4

3 に答える 3

0

JSON 変換用に 2 つの追加メソッドを作成し、プロパティを整数のままにしませんか? そうすれば、両方の世界から最高のものを手に入れることができます。

于 2013-04-05T08:13:53.977 に答える