使用核心数据对象填充NSSet

时间:2013-05-15 18:48:03

标签: iphone ios core-data nsset

我在核心数据中有一对多的关系。现在我想从我的核心数据实体中创建一个Object并将其设置为NSSet。我认为核心数据对象是以正确的方式实例化的。但是我没有把它的对象设置为NSSet。

AppDelegate *appDelegate = [[UIApplication sharedApplication]delegate];
NSManagedObjectContext *context = [appDelegate managedObjectContext];

NSSet *selectedCategories = [NSSet set];

for (NSString *categoryName in self.categories /*NSMutableArray propterty*/) {
    Category *category = [NSEntityDescription  
    insertNewObjectForEntityForName:@"Category" inManagedObjectContext:context];
    category.name = categoryName;
    [selectedCategories setByAddingObject:category];
}

[self.delegate addCategoryViewControllerDidSelectCategory:
                                 self didSelectCategories:selectedCategories];

我还是Core Data和iOS的新手。我希望你能帮助我。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

这一行

[selectedCategories setByAddingObject:category];

创建一个未分配给任何变量的新集。尝试使用可变集

NSMutableSet *selectedCategories = [NSMutableSet set];

for (NSString *categoryName in self.categories /*NSMutableArray propterty*/) {
    Category *category = [NSEntityDescription  
    insertNewObjectForEntityForName:@"Category" inManagedObjectContext:context];
    category.name = categoryName;
    [selectedCategories addObject:category];
}

答案 1 :(得分:1)

您需要像这样构建集合:

selectedCategories = [selectedCategories setByAddingObject:category];

但这样做效率非常低,相反应该使用NSMutableSet并将每个新对象添加到其中:

 [selectedCategories addObject:category];