NSSet只从我的set中获取最后一个值

时间:2012-04-16 12:52:33

标签: iphone ios xcode core-data nsset

我尝试从实体“Teilnehmer”中获取成员,然后我想将它保存到另一个与“buchung”有关系的实体“Buchungsteilnehmer”。

问题是,nsset函数只保存姓氏并将其与我的实体“buchung”建立关系。但我想将for语句中的所有成员存储到与“buchung”的关系中。

请帮助我

NSFetchRequest *request = [[NSFetchRequest alloc] init];
        NSEntityDescription *entity = [NSEntityDescription entityForName:@"Teilnehmer" inManagedObjectContext:context];

        [request setEntity:entity];

        NSArray *events = [context executeFetchRequest:request error:nil];




        for (Teilnehmer *teil in events) {
         teilnehmer = [NSEntityDescription insertNewObjectForEntityForName:@"Buchungsteilnehmer" inManagedObjectContext:context];
            teilnehmer.name=teil.name;
            NSLog(@"Name der Teilnehmer lautet: %@",teil.name);
            NSError *error;
            if (![context save:&error]) 
            {
                NSLog(@"Fehler beim hinzufügen : %@", [error localizedDescription]);
            }

        }

        NSSet *set = [NSSet setWithObject:teilnehmer];    
        NSLog(@"SET: %@",set);
        buchung.buchungsteilnehmer=set;

        NSError *error;
        if (![context save:&error]) 
        {
            NSLog(@"Fehler beim hinzufügen : %@", [error localizedDescription]);
        }

2 个答案:

答案 0 :(得分:0)

在for循环开始之前创建一个NSMutableSet。每次插入新实体时都要在集合上调用addObject。

答案 1 :(得分:0)

您只使用一个对象创建您的集合,那么您希望它如何拥有多个对象?

按如下方式更改您的代码:

  NSMutableSet *set = [[NSMutableSet alloc] init];                

  for (Teilnehmer *teil in events) {
         teilnehmer = [NSEntityDescription insertNewObjectForEntityForName:@"Buchungsteilnehmer" inManagedObjectContext:context];
            teilnehmer.name=teil.name;
            NSLog(@"Name der Teilnehmer lautet: %@",teil.name);
            NSError *error;
            if (![context save:&error]) 
            {
                NSLog(@"Fehler beim hinzufügen : %@", [error localizedDescription]);
            } else {
                [set addObject:teilnehmer];
            }

        }

   buchung.buchungsteilnehmer=set; // I assume you synthesized this member so it retains set
   [set release];