1

Core Data に 1 対多の関係があります。ここで、コア データ エンティティからオブジェクトを作成し、それを NSSet に設定したいと考えました。Core Data 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 にまったく慣れていません。皆さん、私を助けてくれることを願っています。前もって感謝します。

4

2 に答える 2

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];
}
于 2013-05-15T19:01:39.087 に答える
1

次のようにセットを構築する必要があります。

selectedCategories = [selectedCategories setByAddingObject:category];

しかし、それは非常に非効率的です。代わりに、を使用して、NSMutableSet新しいオブジェクトをそれぞれ追加する必要があります。

 [selectedCategories addObject:category];
于 2013-05-15T19:03:39.080 に答える