0

このJSONデータをマッピングしようとして完全に立ち往生しています:

{
  "All_Data": [
    {
      "TANTENNE": [
        {"ID": 2068, "KIND": "PARABOLE"}, 
        {"ID": 2069, "KIND": "ANTENNE TNT HERTZIENNE"}, 
        {"ID": 2070, "KIND": "ANTENNE COLLECTIVE"}, 
        {"ID": 2071, "KIND": "PARABOLE PLATE"}
      ],
      "totalCount": 4, 
      "success": true
    },
    {
      "success": true,
      "FANTENNE": [
        {"ID": 1121, "CONNECT": "Autre"}, 
        {"ID": 1122, "CONNECT": "Neovia"}, 
        {"ID": 1124, "CONNECT": "non"}, 
        {"ID": 1125, "CONNECT": "oui"}, 
        {"ID": 1126, "CONNECT": "Patch"}, 
        {"ID": 1127, "CONNECT": "SRTD"}, 
        {"ID": 1128, "CONNECT": "Standard"}
      ],
      "totalCount": 7
    },
    {
      "MANTENNE": [
        {"ID": 2065, "STATUS": "NON PRESENTE", "ACTION": 1}, 
        {"ID": 2066, "STATUS": "DEFECTUEUSE", "ACTION": 2}, 
        {"ID": 2067, "STATUS": "2EME ANTENNE POSEE", "ACTION": 3}
      ],
      "totalCount": 3, 
      "success": true
    }, 
    {
      "totalCount": 5, 
      "LANTENNE": [
        {"ID": 1139, "LOCATION": "AU SOL"}, 
        {"ID": 1140, "LOCATION": "Balcon"}, 
        {"ID": 1142, "LOCATION": "FACADE"}, 
        {"ID": 1143, "LOCATION": "Toit"}, 
        {"ID": 2064, "LOCATION": "JARDIN"}
      ], 
      "success": true
    }, 
  ], 
  "success": true
}

Core Data エンティティ (およびすべての個々のリーフ オブジェクト ( TANTENNEFANTENNE、 )MANTENNEに関連付けられたクラス) があるとしLANTENNEます。

TANTENNE上記の JSON を受け取ったら、 の 4 つのインスタンス、 の 7 つのインスタンスFANTENNE、 の 3 つのインスタンスMANTENNE、および の 5 つのインスタンスを挿入したいと思いますLANTENNE

これらのクラスには個別のマッピングがあります。

RKManagedObjectMapping *mapping =  [RKManagedObjectMapping mappingForEntityWithName:@"TANTENNE" inManagedObjectStore:self.objectStore];
mapping.primaryKeyAttribute = @"id";

[mapping mapKeyPathsToAttributes:
 @"ID", @"id",
 @"KIND", @"kind",
 nil];

[self setObjectMapping:mapping forKeyPath:@"TANTENNE"];

これは、マッピング プロバイダーの初期化時に呼び出されます。しかし、次のようなコンソール メッセージが表示されるため、これでは明らかに十分ではありません。

[…] T restkit.object_mapping:RKObjectMapper.m:293 Examining keyPath 'TANTENNE' for mappable content...
[…] D restkit.object_mapping:RKObjectMapper.m:303 Found unmappable value at keyPath: TANTENNE

「All_Combo.TANTENNE」キー パスを使用してマッピングを追加すると、RestKit は後で完全な配列を 1 つの宛先オブジェクトにマップしようとしてクラッシュします。

これは RestKit 0.10 を使用したものです (0.20 には移行していません。なぜなら、すべての Magical Record の機能がなくなっており、よく使用しているからです)。

洞察をありがとう。

4

1 に答える 1

0

おそらくマッピングを壊す可能性があることを念頭に置いています。

1) ルート キー パス vor each マッピングを介してルート キー パスを構成しmapping.rootKeyPath = @"All_Data"、返された JSON のルートにキー パス "TANTENNE" のマッピングがその値を期待しないようにします。

2) 配列内のディクショナリ 「TANTENNE」のこれらの値はディクショナリで送信されるため、追加の構成を使用する必要がある場合があります。「TANTENNE」配列のルートを使用して辞書内の値に接続すると、[mapping mapRelationship:@"TANTENNE" withMapping:mapping];おそらく機能します。

于 2013-02-10T20:23:03.153 に答える