iPhone核心数据:如何将NSSet从一个实体复制到另一个实体?
问题描述:
此代码用于制作“初始数据”或“测试数据”。iPhone核心数据:如何将NSSet从一个实体复制到另一个实体?
Category
实体将携带默认types
。 Subcategory
实体将从Category
复制默认types
。 他们不会使用相同的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
?我担心我只会在Category
中设置一个指向默认types
的指针。
如何复制Category.types
并将其设置为Subcategory.types
中的类型?
设计明智,我应该创建一个新的实体来保存类别的默认类型,而不是使用默认和非默认的相同实体?
答
你类型是一个标准的对象,你可以接受并使[类型复制] 之后,你可以做你想要的东西。
嗯,我发现了一个修复程序,我不知道这是否是正确的方法,但我列举了默认类型。 – ssj 2010-10-23 22:44:31