用户必须在AllFamille
中创建一个系列。在第二个视图中,用户必须在AllProduit
中创建产品。创建时,用户必须选择之前创建的族。
AllFamille
和AllProduit
是两个不同的实体。如何在他们之间建立关系?
家庭创造:
-(IBAction)save:(id)sender
{
app=[[UIApplication sharedApplication]delegate];
NSManagedObjectContext *context = [app managedObjectContext];
AllFamille *famille = [NSEntityDescription insertNewObjectForEntityForName:@"AllFamille"inManagedObjectContext:context];
famille.name = nameFamField.text;
NSError *error;
if (![context save:&error]) {
NSLog(@"Erroor");
}
[[NSNotificationCenter defaultCenter] postNotificationName:@"famCreated" object:self];
}
产品创作:
-(void)addProd:(NSString *)idProd
{
NSManagedObjectContext *context = [app managedObjectContext];
NSError *error = nil;
AllCodeVente * _allCodeVente = (AllCodeVente*) [NSEntityDescription insertNewObjectForEntityForName:@"AllCodeVente" inManagedObjectContext:context];
for (NSManagedObject *obj in app.cdeVenteArray)
{
_allCodeVente.codeVente = [obj valueForKey:@"cdv"];
_allCodeVente.uniteVente = [obj valueForKey:@"uv"];
}
AllProduit * _allProduit = (AllProduit*) [NSEntityDescription insertNewObjectForEntityForName:@"AllProduit" inManagedObjectContext:context];
_allProduit.libelleProduit = nomStr;
_allProduit.familleProduit=familleStr;
_allProduit.stockProduit =qteStockStr;
_allProduit.prixVenteProduit=prixVente;
_allProduit.prixAchatProduit = prixAchat;
_allProduit.idProduit= idProd;
[_allCodeVente addProduitObject:_allProduit];
if (![context save:&error]) {
NSLog(@"Erroor");
}
}
答案 0 :(得分:1)
我不确定我是否理解你的问题,但你可以遵循这些提示。
以正确的方式为您的实体建模
这意味着您需要(我想)AllFamille
(简称为AF
)和AllProduit
(AP
)之间的多对多关系。
例如,创建从toAllProduits
到AF
的名为AP
的多对多关系。创建一个名为toAllFamille
的关系(反向),从AP
到AF
。
请参阅我的常见答案:Setting up a parent-child relationship in Core Data。
检索正确的家庭
创建了一系列系列后,您可以创建产品并将它们与特定系列相关联。怎么样?
例如,创建NSFetchRequest
以检索特定的AF
。您需要NSPredicate
。之后,只需使用检索到的族并将其分配给产品。 e.g。
AllProduit * _allProduit = (AllProduit*) [NSEntityDescription insertNewObjectForEntityForName:@"AllProduit" inManagedObjectContext:context];
_allProduit.libelleProduit = nomStr;
// your other properties here...
_allProduit.toAllFamille = retrievedAllFamille; // where this object has been retrieved with the correct request
希望有所帮助。