4

こんにちは、私は変換可能な属性タイプを使用しており、フォーラムの 1 つでアーカイブの手順に従いました。

しかし、それは言う

CoreData: 警告: エンティティ 'SurveyData' 2013-04-30 09:44:16.022 TestReachability[11641:c07] -[SurveyApplication encodeWithCoder:]: 認識されないセレクターが送信されましたインスタンス 0x845cb00 へ 2013-04-30 09:44:16.023 TestReachability[11641:c07] *キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了します。

これが私のコードです

SurveyApplication *survey =[[SurveyApplication alloc]init];
survey.name=@"dheeraj";
survey.phone=@"573-356-2598";

NSManagedObject *aStory = [NSEntityDescription insertNewObjectForEntityForName:@"SurveyData"inManagedObjectContext:self.managedObjectContext];
[aStory setValue:survey forKey:@"survey"];
NSError *saveError = [[NSError alloc]init];
if (![self.managedObjectContext save:&saveError]) {
    NSLog(@"%@",saveError);
}

SurveyAppplication オブジェクトは私のカスタム クラスであり、オブジェクトを作成してコア データを保存しようとしています。

ありがとうディーラジ

4

1 に答える 1

8

アトリビュートを変換可能にするだけでは不十分です。変換が行われるように調整する必要もあります。Core Data に古いオブジェクトを変換するよう指示するだけでは、それが何をすべきかを知っていると期待することはできません。いくつかのオプションがあります。

  1. Core Data にデータの変換方法を教えないでください。この場合、Core Data はencodeWithCoder:オブジェクトを呼び出して に変換しようとしますNSData。そのため、このメソッドに言及しているエラーが発生します。クラスでメソッドを呼び出そうとしていますが、そのメソッドは存在しません。この場合、変換を行うにはクラスが準拠する必要があります。NSCoding

  2. Core Data にデータの変換方法を伝えます。この場合NSValueTransformer、変換を実行する のサブクラスを作成します。これは、Core Data モデル エディターまたはコードで、属性に対して構成します。この場合、変換の実行方法を認識しているカスタム トランスフォーマー クラスが必要です。

于 2013-04-30T18:02:16.320 に答える