简体   繁体   English

用CoreData对象填充NSSet

[英]Fill NSSet with CoreData Objects

I have a One-To-Many Relationship in Core Data. 我在核心数据中有一对多关系。 Now I wanted to create a Object out of my Core Data Entity and set it to an NSSet. 现在,我想从我的核心数据实体中创建一个对象并将其设置为NSSet。 I think the Core Data Object is instantiate in the right way. 我认为核心数据对象以正确的方式实例化。 But I didn't get it working to set my Object to an NSSet. 但是我没有将我的Object设置为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];

I am still new to Core Data and iOS at all. 我仍然对Core Data和iOS还是陌生的。 I hope you can help me out folks. 我希望你能帮助我。 Thank you in advance. 先感谢您。

This line 这条线

[selectedCategories setByAddingObject:category];

creates a new set that is not assigned to any variable. 创建一个未分配给任何变量的新集合。 Try using a mutable set 尝试使用可变集

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];
}

You need to build the set like this: 您需要像这样构建集合:

selectedCategories = [selectedCategories setByAddingObject:category];

But that's brutally inefficient, instead you should use an NSMutableSet and add each new object to it: 但这效率很低下,相反,您应该使用NSMutableSet并将每个新对象添加到其中:

 [selectedCategories addObject:category];

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM