私のサーバーからJSON応答があります。 RestKitログから採取 データは、次のようになりますRestKit - オブジェクトマッピング!ここで何がうまくいかないのですか?
置き、PlaceinfoとLatestDBUpdate:
sourceObject: (
{
place = {
"place_id" = "3cc1e372-f9d9-11e0-aba9-9415ab1a8034";
placeinfo = {
latitude = "12.5846738815";
longtitude = "55.6815948486";
"place_id" = "3cc1e372-f9d9-11e0-aba9-9415ab1a8034";
};
timestamp = "2011-10-19 00:33:44";
};
},
{
place = {
"place_id" = "b65e36e0-f9d9-11e0-aba9-9415ab1a8034";
placeinfo = {
latitude = "12.5720376968";
longtitude = "55.6785774231";
"place_id" = "b65e36e0-f9d9-11e0-aba9-9415ab1a8034";
};
timestamp = "2011-10-19 00:37:08";
};
},
{
Timestamps = {
"latest_update" = "2011-10-18 17:12:09";
uuid = "8c6fb842-f99b-11e0-aba9-9415ab1a8034";
};
})and targetObject: (null)
データは、3つのオブジェクトにマッピングされます。
問題がある:
上記JSON応答の2位オブジェクトと多くの関係する一つに接続された2つのネストPlaceInfoオブジェクトが存在します。
Timestampsキーワードに関連するLatestDBUpdateオブジェクトもあります。
Restkitは3つのプレイスオブジェクトをマップし、1つはすべてNULLになります。 他の2つのプレイスオブジェクトは正しくマップされており、リレーションも正しいです。 もちろん、2つのオブジェクトをマップするだけです!
LatestDBUpdateマッピングは、正しいタイムスタンプもマッピングします。
私は、JSONの応答のタイムスタンプ部分を削除すると、2つの場所オブジェクトだけでマッピングが正しいことを確認しました。
しかし、私はそこにタイムスタンプの部分が必要です! これを修正する方法がわかりません!任意のアイデア - 私は実際にいくつかの入力を使用することができます。
ここが使用されるマッピングの設定です:
//Place mapping
if (!self.placeManagedObject){
self.placeManagedObject = [RKManagedObjectMapping mappingForClass:[Place class]];
self.placeManagedObject.primaryKeyAttribute = @"UUID";
self.placeManagedObject.setDefaultValueForMissingAttributes = YES;
[self.placeManagedObject mapKeyPath:@"place_id" toAttribute:@"UUID"];
[self.placeManagedObject mapKeyPath:@"timestamp" toAttribute:@"timestamp"];
}
//PlaceInformation mapping
if (!self.placeInfoManagedObject){
self.placeInfoManagedObject = [RKManagedObjectMapping mappingForClass:[PlaceInfo class]];
self.placeInfoManagedObject.primaryKeyAttribute = @"UUID";self.placeInfoManagedObject.setDefaultValueForMissingAttributes = YES;
[placeInfoManagedObject mapKeyPath:@"place_id" toAttribute:@"UUID"];
[placeInfoManagedObject mapKeyPath:@"longtitude" toAttribute:@"longtitude"];
[placeInfoManagedObject mapKeyPath:@"latitude" toAttribute:@"latitude"];
}
//latestDBUpdate timestamp mapping
if (!self.latestDBUpdateManagedObject){
self.latestDBUpdateManagedObject = [RKManagedObjectMapping mappingForClass:[LatestDBUpdate class]];
self.latestDBUpdateManagedObject.primaryKeyAttribute = @"latest_update";
[self.latestDBUpdateManagedObject mapKeyPath:@"latest_update"toAttribute:@"latest_update"];
[self.latestDBUpdateManagedObject mapKeyPath:@"uuid" toAttribute:@"uuid"];
}
//Set mapping relations
[self.placeManagedObject mapRelationship:@"placeinfo" withMapping:self.placeInfoManagedObject];
// Register mapping with the provider -
[self.objectManager.mappingProvider setMapping:self.placeManagedObject forKeyPath:@"place"];
[self.objectManager.mappingProvider setMapping:self.placeInfoManagedObject forKeyPath:@"placeinfo"];
[self.objectManager.mappingProvider setMapping:self.latestDBUpdateManagedObject forKeyPath:@"Timestamps"];