2 alllllllll alllllllll 于 2013.05.16 10:26 提问

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

2个回答

xinyoulingxi1_tong
xinyoulingxi1_tong   2013.05.16 14:35
已采纳

这行:

[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];
}
KindAzrael
KindAzrael   2013.05.17 00:31
NSSet *selectedCategories = [NSSet set];  //返回的试一个不可变的Set selectedCategories
[selectedCategories addObject:category]; //基于selectedCategories内容添加category,返回新的se包含category,selectedCategories是不可变的,debug很容易看到

应该使用NSMutableSet 这样可以灵活添加删除Set里的元素, 像NSArray一样 要能改变array内容,应该使用NSMutableArray。
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!