5

同じ属性に異なる値を使用するコア データ オブジェクトと REST Web インターフェイスがあります。管理対象オブジェクトには、整数 (列挙) である「type」という名前の属性があり、REST インターフェイスには、「type」という名前の文字列値があります (「truck」、「car」、「moped」などの文字列)。

RKObjectLoaderDelegate メソッドを使用してオブジェクトを取得するときに、値を文字列から整数に変換しますobjectLoader:willMapData:。それが私がこれを行うべき方法であることを願っています。

私の質問: オブジェクトを配置/投稿するとき、値を整数 (列挙型) から文字列値に戻す方法または場所を教えてください。シリアライゼーション プロセスで、プット/ポスト アクションの値を操作できる瞬間はありますか? シリアライザーまたは RKManagedObjectMapping を perpahps サブクラス化する必要がありますか、それとも属性の値を変更できる時点でデリゲートが呼び出されていますか?

4

1 に答える 1

9

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

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

送信する場合は次のようにします。

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

この方法ではまったく使用する必要がなくobjectLoader:willMapData:、変換はオブジェクト (カテゴリ) にうまく埋め込まれます。

于 2012-06-18T13:35:06.737 に答える