【问题标题】:Fill NSSet with CoreData Objects用 CoreData 对象填充 NSSet
【发布时间】: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 还是很陌生。我希望你能帮助我的人。 提前谢谢你。

【问题讨论】:

    标签: iphone ios core-data nsset


    【解决方案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];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-29
      相关资源
      最近更新 更多