0

しばらく RestKit を使用していましたが、最新バージョンでは一部の API が変更され、単純な JSON を解析できなくなりました。

私が持っているペイロードは次のとおりです。

{
   "result":true,
   "items":[
      {
         "id":"1",
         "receiver":"11011101"
      },
      {
         "id":"2",
         "receiver":"11011101"
      }
   ]
}

「items」ディクショナリの内容を、作成したオブジェクト Conversation のインスタンスとして解析するにはどうすればよいですか?

以下のコードを使用しても機能しません (オブジェクトはマップされません)。

RKObjectMapping* conversationMapping = [RKObjectMapping mappingForClass:[Conversation class]];
[conversationMapping mapKeyPath:@"id" toAttribute:@"id"];
[conversationMapping mapKeyPath:@"receiver" toAttribute:@"receiver"];

[[RKObjectManager sharedManager].mappingProvider setMapping:conversationMapping forKeyPath:@"items"];
[[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/getConversations" delegate:self];

会話クラス

@interface Conversation : NSObject {
    NSString *id;
    NSString *receiver; }

+ (void)objectMapping;

@property (nonatomic, strong) NSString *id; @property (nonatomic, strong) NSString *receiver;

@end

@implementation Conversation
@synthesize id;
@synthesize receiver;


+ (void)objectMapping {
    RKObjectMapping* conversationMapping = [RKObjectMapping mappingForClass:[Conversation class]];
    [conversationMapping mapKeyPath:@"id" toAttribute:@"id"];
    [conversationMapping mapKeyPath:@"receiver" toAttribute:@"receiver"];

    [[RKObjectManager sharedManager].mappingProvider setMapping:conversationMapping forKeyPath:@"items"];
}

@end
4

2 に答える 2

0

問題を解決しました。RestKitとは全く関係のないものでした。オブジェクト マッピングが正常に機能するように修正した後、サーバーから返される応答のコンテンツ タイプが JSON に設定されませんでした。

于 2012-09-26T11:57:41.027 に答える
0

ルート オブジェクト (「結果」と会話の「アイテム」を保持するオブジェクト) はどのように定義されていますか? 次のようになります。

@インターフェース MyResponse

@property (非アトミック、強力) NSArray* アイテム。@property (非アトミック、代入) BOOL 結果。

そのための適切なマッピングもあります。

于 2012-09-25T14:58:05.667 に答える