0

Core Data に問題があります。Core Data はエンティティ関係を読み込むのが面倒だということを読みました。これは、対多関係がない場合に備えてです。

エンティティ「移動」との関係 (対多関係) を持つエンティティ「アイテム」があります。 ここに画像の説明を入力

このメソッドでは、「Movement」のすべてのインスタンスをロードすることに加えて、「名前」などの「アイテム」の相対的な属性をロードしたいと考えています。

//Core data request
NSError *error;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Movement"
                                          inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
fetchRequest.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"date" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)]];

NSFetchedResultsController *result = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
                                                                         managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil
                                                                                    cacheName:@"Root"];

[result performFetch: &error];

動作するかどうかを確認するために、次のコードを追加しました。

NSArray *array = [NSArray arrayWithArray:[self.managedObjectContext executeFetchRequest:fetchRequest error:&error]];
for (int i = 0; i < array.count; i++) {
    Movement *movement = [array objectAtIndex:i]
    NSLog(@"item name %@",movement.movement_inItem.name);
}

結果は null項目名 (null)

私は周りを見回して、このコードを[fetchRequest setEntity:entity] の下に配置しようとしました。

NSString *relationshipKeyPath = @"movement_inItem";
NSArray *keyPaths = [NSArray arrayWithObject:relationshipKeyPath];
[fetchRequest setRelationshipKeyPathsForPrefetching:keyPaths];
[fetchRequest setIncludesSubentities:YES];

しかし、何も変わりません。

どうもありがとう!

4

0 に答える 0