问题描述
- CoreData 对象充填NSSet
-
有一个CoreData中的一对多关系。现在想从coredata实体中创建一个对象,然后设置为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];
解决方案
这行:
[selectedCategories setByAddingObject:category];
创建了一个没有指定变量的新设置,试试用NSMutableSet
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];
}
解决方案二:
NSSet *selectedCategories = [NSSet set]; //返回的试一个不可变的Set selectedCategories
[selectedCategories addObject:category]; //基于selectedCategories内容添加category,返回新的se包含category,selectedCategories是不可变的,debug很容易看到
应该使用NSMutableSet 这样可以灵活添加删除Set里的元素, 像NSArray一样 要能改变array内容,应该使用NSMutableArray。
时间: 2024-09-29 06:26:20