用 CoreData 对象填充 NSSet
Posted
技术标签:
【中文标题】用 CoreData 对象填充 NSSet【英文标题】:Fill NSSet with CoreData Objects 【发布时间】:2013-05-15 18:48:02 【问题描述】:我在核心数据中有一对多的关系。现在我想从我的核心数据实体中创建一个对象并将其设置为 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];
我对 Core Data 和 ios 还是很陌生。我希望你能帮助我的人。 提前谢谢你。
【问题讨论】:
【参考方案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];
【讨论】:
谢谢,这与我的问题有关。现在我可以填充集合了。简单的。所以我的错误取决于核心数据。【参考方案2】:你需要像这样构建集合:
selectedCategories = [selectedCategories setByAddingObject:category];
但这样效率极低,您应该使用 NSMutableSet
并向其中添加每个新对象:
[selectedCategories addObject:category];
【讨论】:
以上是关于用 CoreData 对象填充 NSSet的主要内容,如果未能解决你的问题,请参考以下文章
使用 Swift 使用 Core Data 对象填充 UIPickerView
Swift 2:使用两个 CoreData 实体填充 TableView