2012-06-10 8 views
5

同じ属性に対して異なる値を使用するコアデータオブジェクトとREST Webインターフェイスがあります。管理対象オブジェクトには、 "type"という名前の属性(列挙型)があり、RESTインターフェイスには "type"という文字列値( "truck"、 "car"、 "moped"などの文字列)があります。Restkitを使用してRESTにマッピングする際に、属性の値を変更するにはどうすればよいですか?

RKObjectLoaderDelegateメソッドobjectLoader:willMapData:を使用してオブジェクトを取得するとき、値を文字列から整数に変換します。私はこれをどうやってやるべきだと思う。

私の質問:オブジェクトを置く/投稿するときに、値をinteger(enum)からstring値に戻す方法や場所はどこですか?私はput/postアクションの値を操作できるシリアル化プロセスに瞬間がありますか?私はperpahpsシリアライザまたはRKManagedObjectMappingをサブクラス化するか、または属性の値を変更することができるという点で私の代理人が呼び出されるのでしょうか?

答えて

9

マッピングする(NSManagedObject)クラスのカテゴリを作成し、Restkitで使用されるこのカテゴリに特別なプロパティを追加することで、これを解決できます。 したがって、列挙型(型)を文字列に変換し、属性 "typeString"を "type"ではなくjsonにマップするカテゴリにtypeStringプロパティを追加します。

[serializationMapping mapKeyPath:@"typeString" toAttribute:@"type"] 

あなたがすべてでobjectLoader:willMapData:を使用する必要はありません。この方法で、そして変換がうまく(オブジェクトに埋め込まれている:送信するため

[mapping mapKeyPath:@"type" toAttribute:@"typeString"] 

と、このような:それは受信のために、このようになります。カテゴリー)。

+0

ちょうど素晴らしい!素敵な解決策をたくさん探していました。ここにあります。どうも。 – NDY

関連する問題