0

Core データには、3 種類のエンティティがあります。エンティティ A、エンティティ B、エンティティ C

エンティティ C からエンティティ A への関係は、1 対多の関係です。エンティティ C からエンティティ B への関係も、1 対多の関係です。

つまり、A と B の両方にinRecord、エンティティ C の単一のインスタンスを指すフィールドがあります。

次のコードがあります

    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"EntityA"];

    request.predicate = [NSPredicate predicateWithFormat:@"inRecord.title = %@", title];
    NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:YES];
    request.sortDescriptors = [NSArray arrayWithObject:sortDescriptor];

    NSError *error = nil;
    NSArray *arrayOfEntity = [context executeFetchRequest:request error:&error];

arrayOfEntity[0] のクラスを確認すると、クラス EntityA であると表示されます。しかし、まったく同じコードで、上記の EntityA を EntityB に置き換えた場合、arrayOfEntity[0] のクラスを確認すると、EntityA ではなく、クラス NSManagedObject と表示されます。

何故ですか?

4

1 に答える 1

1

Core Data Model インスペクターでエンティティの「クラス」を管理対象オブジェクトのサブクラスに設定する必要があります。

( Xcodeメニューから「エディタ -> 管理対象オブジェクトのサブクラスを作成...」でエンティティのカスタムクラスを作成すると、クラスは自動的に設定されます。)

于 2013-09-08T07:51:12.687 に答える