0

RKManagedObjectImporter (RESTkit 2.0 フレームワークを使用) のimportObjectsFromItemAtPathを使用して、JSON ファイルからいくつかのデータをインポートし、それをコア データに入れています。JSONファイルにいくつかの小さな画像を入れたいです。これらを base64 文字列に変換しました。base64文字列をバイナリデータに変換してコアデータに保存する方法と、それを取得してUIImageを作成する方法は知っていますが、 importObjectsFromItemPathを使用してbase64文字列をバイナリデータに変換する方法はわかりません

私は現在、JSON を読み取り、手動で base64 文字列をバイナリ データに変換してからコア データに格納するという回避策を使用していますが、他のすべての JSON ファイルに使用しているため、RESTkit マッピング メソッドを使用することをお勧めします。これができるかどうか誰でも知っていますか?

4

1 に答える 1

1

RKValueTransformer を使用してこれを行うことができるはずです。基本的に、これらはネイティブ型と JSON 応答 (およびその逆) の間のマッピングのためのオブジェクトです。

これは、base64 文字列 (JSON からの可能性があります) を NSData に変換する私のものです。

[RKValueTransformer.defaultValueTransformer
 insertValueTransformer:
 [RKBlockValueTransformer
  valueTransformerWithValidationBlock:^BOOL(__unsafe_unretained Class inputValueClass, __unsafe_unretained Class outputValueClass) {
      return [inputValueClass isSubclassOfClass:[NSString class]] && [outputValueClass isSubclassOfClass:[NSData class]];
  }
  transformationBlock:^BOOL(id inputValue, __autoreleasing id *outputValue, __unsafe_unretained Class outputClass, NSError *__autoreleasing *error) {
      RKValueTransformerTestInputValueClassIsSubclassOfClass(outputClass, [NSString class], error);
      RKValueTransformerTestOutputValueClassIsSubclassOfClass(outputClass, [NSData class], error);
      // If iOS7+
      //*outputValue = [[NSData alloc] initWithBase64EncodedString:(NSString*)inputValue options:0];
      // If iOS6-
      *outputValue = [[NSData alloc] initWithBase64Encoding:(NSString*)inputValue];
      return YES;
  }] atIndex:0];
于 2014-06-18T18:32:59.740 に答える