次の関係で2つのオブジェクトが設定されています。
ニュース<->>リンク
リンクには2つの属性が含まれ、1つはURLで、もう1つは関連するテキストです。私は最初にニュースを作成し、それに情報を入力しました。
NSManagedObject *newsData = [NSEntityDescription
insertNewObjectForEntityForName:@"News"
inManagedObjectContext:context];
[newsData setValue:[object objectForKey:@"username"] forKey:@"username"];
[newsData setValue:message forKey:@"content"];
[newsData setValue:[object objectForKey:@"when"] forKey:@"date"];
[newsData setValue:imgUrl forKey:@"img"];
NSMutableSet *links = [launchTicker mutableSetValueForKey:@"links"];
次に、forループ内に、リンクを作成します。
NSManagedObject *linkInfo = [NSEntityDescription
insertNewObjectForEntityForName:@"Link"
inManagedObjectContext:context];
[linkInfo setValue:[object objectForKey:@"id"] forKey:@"id"];
[linkInfo setValue:[[item firstChild] content] forKey:@"text"];
[linkInfo setValue:[[item attributes] valueForKey:@"href"] forKey:@"url"];
[links addObject:linkInfo];
forループが完了したら、作成したリンクのセットをNewsオブジェクトに配置します。
[newsData setValue:links forKey:@"links"];
データをフェッチしているときは、ニュースの情報をうまくフェッチできますが、リンクをフェッチしているときは、何も返されません。
for (NSManagedObject *info in fetchedObjects) {
[fetchRequest setReturnsObjectsAsFaults:NO];
[fetchRequest setRelationshipKeyPathsForPrefetching:[NSArray arrayWithObjects:@"links", nil]];
NSMutableArray *url = [[NSMutableArray alloc] init];
NSMutableArray *text = [[NSMutableArray alloc] init];
NSSet* links = [info valueForKey:@"links"];
NSArray *arrayLinks = [links allObjects];
for(NSManagedObject *link in arrayLinks) {
[url addObject:[link valueForKeyPath:@"url"]];
[text addObject:[link valueForKeyPath:@"text"]];
}
関連するオブジェクトにアクセスしようとすると、なぜ0個のオブジェクトが返されるのかについての洞察を誰かに教えてもらえますか?