3

逆マッピングを使用してrestkit 0.20でNSManagedObjectをJSONにシリアライズする方法は?

今のところ、どこにも投稿する必要はありません。

オブジェクト MyObjectManaged を手動で作成したいと思います。id、name、age などの属性を設定します。

JSON 属性への既存のマッピング my mapping でそれらをマッピングします: userid、first_name、age

JSON を作成して出力します。

出来ますか?はい、いつ、どのように?ご回答ありがとうございます。

4

3 に答える 3

7

私は最近同じことをしようとしています:)最終的にサーバーに接続できるようにマッピングを保持したかっただけでなく、オブジェクトをファイルにシリアル化するためにそれらを再利用したかったのです。

これは、inverseMapping を使用し、RKMappingOperation を介して実行しました。

最初に JSON からのマッピングを設定します -> Core Data Object

RKEntityMapping mapping = [RKEntityMapping mappingForEntityForName:@"MyManagedObject" inManagedObjectStore:rkManagedObjectStore];
[self.nodeMapping addAttributeMappingsFromDictionary:@{
    @"userid": @"id",
    @"first_name": @"name",
    @"age": @"age"
}];

次に、逆マッピングを使用して、オブジェクト インスタンス (「myObject」など) を辞書にマップします。

NSMutableDictionary *jsonDict = [NSMutableDictionary dictionary];
RKObjectMappingOperationDataSource *dataSource = [RKObjectMappingOperationDataSource new];
RKMappingOperation *operation = [[RKMappingOperation alloc] initWithSourceObject:myObject 
                                                               destinationObject:jsonDict
                                                                         mapping:[mapping inverseMapping]];
operation.dataSource = dataSource;

NSError *error = nil;
[operation performMapping:&error];

エラーがないと仮定すると、辞書をシリアル化できます。

NSData *data = [RKMIMETypeSerialization dataFromObject:jsonDict 
                                              MIMEType:RKMIMETypeJSON 
                                                 error:&error];

そこから何をしたいのかわかりませんが、それを文字列に出力したい場合は、次のことができます。

NSString *jsonString = [[NSString alloc] initWithData:data 
                                             encoding:NSUTF8StringEncoding]

それが役立つことを願っています

于 2013-08-16T14:05:23.113 に答える
0

RestKit wiki にアクセスして、オブジェクト マッピングを参照してください。「オブジェクトのパラメータ化とシリアル化」の段落に、シリアル化と逆マッピングに関する情報があります。

于 2013-02-06T11:51:32.617 に答える