0

次の関係で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個のオブジェクトが返されるのかについての洞察を誰かに教えてもらえますか?

4

2 に答える 2

1

使ってみませんか

NSSet *setOfLinks = newsObject.links;
于 2013-01-31T17:35:25.750 に答える
0

私は次のコードでそれを解決しました:

NSEntityDescription *linkEntity = [NSEntityDescription entityForName:@"Link"inManagedObjectContext:context]; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY id == %@", [info valueForKey:@"id"]]; 
[fetchRequest setEntity:linkEntity]; 
[fetchRequest setPredicate:predicate]; 
NSArray *results = [context executeFetchRequest:fetchRequest error:&error];
于 2013-02-04T21:12:49.370 に答える