此代码用于制作“初始数据”或“测试数据”。
Category
实体将带有默认types
。
Subcategory
实体将从types
复制默认Category
。
他们不会使用相同的types
,因为新的types
可能会被删除或添加到Subcategory
。
-(void)newCat:(NSString*)catName subCat:(NSArray*)subCatNames types:(NSArray*)typeNames{
//get the context
NSManagedObjectContext *context = [self managedObjectContext];
//make a category
Category *theCat = [NSEntityDescription
insertNewObjectForEntityForName:@"Category"
inManagedObjectContext:context];
theCat.name = catName;
//make default types and put it in the category
for (int i = 0; i < [typeNames count]; i++) {
Type *type = [NSEntityDescription
insertNewObjectForEntityForName:@"Type"
inManagedObjectContext:context];
type.name = [typeNames objectAtIndex:i];
[theCat addTypesObject:type];
}
//make some subcategories
//copy default types from category to subcategory
for (int i = 0; i < [subCatNames count]; i++) {
Subcategory *newSubcat = [NSEntityDescription
insertNewObjectForEntityForName:@"Subcategory"
inManagedObjectContext:context];
newSubcat.name = [logbookNames objectAtIndex:i];
newSubcat.category = theCat;
[newSubcat addTypes:theCat.types];
}
//save the context
[self save];
}
此方法在我第一次打开应用时起作用。在我终止并重新打开该应用后,除Subcategory
个实体外,所有实体都会保留types
。
为什么其他Subcategory
删除了types
?我担心我只是在types
中设置指向默认Category
的指针。
如何制作副本Category.types
并将其设置为Subcategory.types
中的类型?
设计明智,我应该创建一个新实体来保存类别的默认类型,而不是使用相同的实体来实现默认类型和非默认类型吗?
答案 0 :(得分:0)
你输入的是一个标准对象,你可以接收并制作[类型复制] 之后,你可以用它做你想做的事。